2016-04-28 7 views
1

Wie mehrere Werte in THEN-Klausel von CASE-Anweisung in Sql Server 2008 verwenden?Wie mehrere Werte in THEN-Klausel in CASE-Anweisung übergeben werden SQL Server

z.B.

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

Also hier im Grunde mein United und Kern sind agrregated Werte und wenn durch den Benutzer ausgewählt, möchte ich in Klausel dann entsprechende Werte zu übergeben (was nicht aggregiert sind) Irgendwelche Vorschläge?

+1

Was möchten Sie, wenn 'Country'' 'UNITED'' ist? –

+0

Möchten Sie einen anderen Satz von Werten für jeden Fall auswählen/zurückgeben? –

+3

'CASE' ist ein * Ausdruck *, keine Aussage. Es erzeugt einen * a * -Wert. Außerdem ist nicht klar, was Sie hier zu tun versuchen, da Sie ein Prädikat in den 'THEN'-Klauseln zu haben scheinen, und das ist in der' select'-Klausel nicht gültig. Wenn diese eigentlich dazu gedacht sind, Zeilen zu filtern (zB soll dies in der 'Where' -Klausel sein), würde ich vorschlagen, dass Sie noch einmal schauen, was Sie versuchen zu tun und überlegen, ob Sie nur alle Bedingungen klar in der Abfrage und verknüpfen sie mit booleschen 'und' '' '' –

Antwort

0

könnten Sie etwas verwenden, basiert auf:

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

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

Ich bin sicher, es gibt sauberere Möglichkeiten dies zu tun.

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 
Verwandte Themen