我想调整以下SQL,以便查询将输出卡的类型(签证,万事达卡等)作为PaymentMethod而不是信用卡。
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,
有人可以指出我正确的方向。我尝试在我的案例陈述中添加第二个条件,但它未能通过“未知”#39;适用于所有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,
提前感谢您的协助。
答案 0 :(得分:11)
你可以简化这一点。
CASE pm.PaymentType
WHEN 1 THEN 'Cash'
WHEN 2 THEN 'Check'
WHEN 3 THEN
CASE pm.CardTypeMId
WHEN 1 THEN 'American Express'
WHEN 2 THEN 'Discover'
WHEN 3 THEN 'Mastercard'
WHEN 4 THEN 'Visa'
END
WHEN 4 THEN 'EFT'
WHEN 5 THEN 'Money Order'
WHEN 6 THEN 'Conveyance'
ELSE 'Unknown'
END AS PaymentMethod
答案 1 :(得分:2)
您可以使用嵌套CASE
WHEN pm.PaymentType = 3 THEN
Case
WHEN pm.CardTypeMId = 1 THEN 'American Express'
WHEN pm.CardTypeMId = 2 THEN 'Discover'
WHEN pm.CardTypeMId = 3 THEN 'Mastercard'
WHEN pm.CardTypeMId = 4 THEN 'Visa'
END as CreditCard
答案 2 :(得分:0)
这可能是因为pm.CardTypeMId
时pm.PaymentType = 3
不等于1,2 3或4。
只需尝试WHEN pm.PaymentType = 3 THEN 'Visa'
获取Visa行
答案 3 :(得分:0)
很明显,你没有将1,2,3或4传递给pm.CardTypeID。 因此,您应该添加一个else子句来捕获它,如下所示:
Case pm.PaymentType
When 1 Then 'Cash'
When 2 Then 'Check'
When 4 Then 'EFT'
When 5 Then 'Money Order'
When 6 Then 'Conveyance'
When 3 Then Case pm.CardTypeMId
When 1 Then 'American Express'
When 2 Then 'Discover'
When 3 Then 'Mastercard'
When 4 Then 'Visa'
Else 'Other Credit Card'
End
Else 'Unknown'
End As PaymentMethod