2016-04-28 77 views
1

如何在Sql Server 2008中的CASE語句的THEN子句中使用多個值?如何在CASE語句中的THEN子句中傳遞多個值sql server

例如

Select CASE Country 
      WHEN 'UNITED' THEN Country In ('ABC United','ABS United','X') 
      WHEN 'CORE' THEN country in ('p','q','r') 

所以基本上我在這裏的美國和核心是agrregated值,並在由用戶選擇,我想通過相應的值,然後從句(這是非聚集的) 有什麼建議?

+1

當'Country'爲'UNITED''時,您想要什麼? –

+0

您是否正在爲每種情況選擇/返回一組不同的值。 –

+3

'CASE'是一個*表達*,而不是一個聲明。它產生* a *值。此外,由於您在'THEN'子句中似乎有一個謂詞,並且在'select'子句中無效,因此您不清楚您在此嘗試執行的操作。如果這些實際上是爲了過濾行(例如,本文旨在位於where子句中),那麼我建議你再看看你想要做什麼,並考慮是否只需要將所有在查詢中明顯地表示條件,並將它們與布爾型'和'和'或'連接起來。 –

回答

0

您可以根據使用的東西:

DECLARE @Country as varchar(20) 
SELECT @Country = 'United' 

IF @Country = 'UNITED' 
    SELECT '1', '2' 
IF @Country = 'CORE' 
    SELECT '3', '4' 

我相信有這樣做的簡潔方式。

0
SELECT CASE Country 
      WHEN 'UNITED' 
       THEN CASE 
         WHEN Country IN (
           'ABC United' 
           ,'ABS United' 
           ,'X' 
           ) 
          THEN Country 
         ELSE '' 
         END 
      WHEN 'CORE' 
       THEN CASE 
         WHEN country IN (
           'p' 
           ,'q' 
           ,'r' 
           ) 
          THEN country 
         ELSE '' 
         END 
      ELSE '' 
      END