Ich möchte die folgende SQL optimieren, so dass die Abfrage den Kartentyp (Visa, Mastercard, etc) als PaymentMethod anstelle von Kreditkarte ausgeben wird.Case Statements mit Bedingungen in SQL Server
CASE WHEN pm.PaymentType = 1 THEN 'Cash'
WHEN pm.PaymentType = 2 THEN 'Check'
WHEN pm.PaymentType = 3 THEN 'Credit Card'
WHEN pm.PaymentType = 4 THEN 'EFT'
WHEN pm.PaymentType = 5 THEN 'Money Order'
WHEN pm.PaymentType = 6 THEN 'Conveyance'
ELSE 'Unknown'
END AS PaymentMethod,
Kann mir bitte jemand in die richtige Richtung zeigen. Ich habe versucht, eine zweite Bedingung zu meinem Fall Anweisung hinzufügen, aber es funktioniert nicht, um ‚Unknown‘ für alle Zahlungsarten von 3.
CASE WHEN pm.PaymentType = 1 THEN 'Cash'
WHEN pm.PaymentType = 2 THEN 'Check'
WHEN pm.PaymentType = 3 and pm.CardTypeMId = 1 THEN 'American Express'
WHEN pm.PaymentType = 3 and pm.CardTypeMId = 2 THEN 'Discover'
WHEN pm.PaymentType = 3 and pm.CardTypeMId = 3 THEN 'Mastercard'
WHEN pm.PaymentType = 3 and pm.CardTypeMId = 4 THEN 'Visa'
WHEN pm.PaymentType = 4 THEN 'EFT'
WHEN pm.PaymentType = 5 THEN 'Money Order'
WHEN pm.PaymentType = 6 THEN 'Conveyance'
ELSE 'Unknown'
END AS PaymentMethod,
Sie für Ihre Hilfe Vielen Dank im Voraus.
Klingt wie 'pm.CardTypeMId' möglicherweise nicht 1, 2, 3 oder 4? – LittleBobbyTables
Duplizieren IMO, http://stackoverflow.com/questions/3043154/combining-multiple-condition-in-single-case-statement-in-sql-server – Adam
Sieht für mich gut, ANSI SQL-konforme Syntax. (Versuchen Sie einen CASE in der äußeren CASE wenn 3 dann.) – jarlh