Benutzer mit den meisten Antworten
IIF von Access in CASE WHEN umwandeln

Frage
-
Hallo zusammen,
in Access gibt es folgende Abfrage:
SELECT [_M416].MeWi, [_M416].MeMe, [_M416].MeHs, IIf([_M416].[PnPn]<>0,[_M416].[PnPn],IIf([_M316].[PnPn]<>0,[_M316].[PnPn],[_M216].[PnPn])) AS PnNo FROM (_M416 INNER JOIN _M316 ON ([_M416].MeHs = [_M316].HsHs) AND ([_M416].MeWi = [_M316].HsWi)) INNER JOIN _M216 ON [_M416].MeWi = [_M216].WiWi ORDER BY [_M416].MeWi, [_M416].MeMe, [_M416].MeHs;
Diese Abfrage versuche ich im SQL Server Management Studio mittels CASE und WHEN und ELSE zu ersetzen. Leider bekomme ich nicht mehr als ein WHEN THEN hin.
SELECT dbo.Vw_M416.MeWi, dbo.Vw_M416.MeMe, Vw_M416.MePn, Vw_M316.HsPn, Vw_M216.WiPn, CASE WHEN Vw_M416.MePn <> 0 THEN Vw_M416.MePn ELSE Vw_M316.HsPn END AS KKBNo FROM dbo.Vw_M416 INNER JOIN dbo.Vw_M316 ON dbo.Vw_M416.MeWi = dbo.Vw_M316.HsWi AND dbo.Vw_M416.MeHs = dbo.Vw_M316.HsHs INNER JOIN dbo.Vw_M216 ON dbo.Vw_M416.MeWi = dbo.Vw_M216.WiWi
Wenn Vw_M316.HsPn <> 0 ist, dann soll auch Vw_M316.HsPn angezeigt werden. Ist Vw_M316.HsPn = 0 dann soll Vw_M216.WiPn angezeigt werden. Wie muß es richtig aussehen?
Ich habe mir auch den Thread http://social.technet.microsoft.com/Forums/de-DE/sqlserverde/thread/bdc1f996-7141-4747-8cd8-76033741cf54 "Frage zu CASE WHEN" schon angesehen.
Vielen Dank schon im Voraus.
EDIT: Das ganze passiert auf einem SQL 2000 SP4. Ich weiß, im Laufe des Jahres wird Ersatz kommen. ;)
Servus
Winfried
- Bearbeitet Winfried.Sonntag Mittwoch, 22. Februar 2012 14:55
Antworten
-
Hallo Winfried,
CASE ist wie IIF eine Funktion, wenn auch mit anderer (und erweiterter) Syntax,
die man weiter schachteln kann:CASE WHEN [_M416].[PnPn] <> 0 THEN [_M416].[PnPn] ELSE CASE WHEN [_M316].[PnPn] <> 0 THEN [_M316].[PnPn] ELSE [_M216].[PnPn] END END AS PnPo
Gruß Elmar
- Als Antwort markiert Winfried.Sonntag Mittwoch, 22. Februar 2012 18:35
Alle Antworten
-
Hallo Winfried,
CASE ist wie IIF eine Funktion, wenn auch mit anderer (und erweiterter) Syntax,
die man weiter schachteln kann:CASE WHEN [_M416].[PnPn] <> 0 THEN [_M416].[PnPn] ELSE CASE WHEN [_M316].[PnPn] <> 0 THEN [_M316].[PnPn] ELSE [_M216].[PnPn] END END AS PnPo
Gruß Elmar
- Als Antwort markiert Winfried.Sonntag Mittwoch, 22. Februar 2012 18:35
-
Am 22.02.2012 schrieb Elmar Boye [MVP]:
Hallo Elmar,CASE ist wie IIF eine Funktion, wenn auch mit anderer (und erweiterter) Syntax,
die man weiter schachteln kann:das habe ich nachgelesen. Auch habe ich sehr viel probiert bevor ich
hier gepostet habe.CASE WHEN [_M416].[PnPn] <> 0
THEN [_M416].[PnPn]
ELSE
CASE WHEN [_M316].[PnPn] <> 0
THEN [_M316].[PnPn]
ELSE [_M216].[PnPn]
END
END AS PnPoVielen Dank, das funktioniert. ;)
Servus
Winfried
Connect2WSUS: http://www.grurili.de/tools/Connect2WSUS.exe
GPO's: http://www.gruppenrichtlinien.de
Community Forums NNTP Bridge: http://communitybridge.codeplex.com/