さまざまなクレジットカードタイプで行われたトランザクションの数に関する臨時報告書を作成する必要があります。レポートの目的上、4で始まるすべてのクレジットカードがVISAカードであり、5で始まるクレジットカードがMasterCardであると仮定するのは問題ありません。可変長のinput_expressionによるTransact SQL CASE
このクエリは、上記の区別に適しています。しかし、私たちの状況(これはワールドワイドどのように動作するかわからない)で3で始まるすべてのカードがあるものを除き、ダイナースクラブカードと考えることができ
select card_type =
case substring(pan,1,1)
when '4' then 'VISA'
when '5' then 'MasterCard'
else 'unknown'
end,count(*),
sum(amount)
from transactions
group by card_type
AMEXカードである37で始まります。このような上記のクエリが完了ハック
select card_type =
case substring(pan,1,2)
when '30' then 'Diners'
...
when '37' then 'AMEX'
...
when '39' then 'Diners'
when '40' then 'VISA'
...
when '49' then 'VISA'
when '50' then 'MasterCard'
...
when '59' then 'MasterCard'
else 'unknown'
end,count(*),
sum(amount)
from transactions
group by card_type
のように思えるの拡張
は、最初の2桁は特殊なケースに一致する場合を除き、すべてのケースで最初の桁のグループ化のエレガントな方法はありますか?
私も...
EDIT誰でも手助けしたい場合はどのようにタイトルこの質問見当がつかない:私はマスターカードとVISAの値はこれだけであることを、混同していたが正しい:)あなたは、次のようにcase文を行うことができます
答えがほとんど私の質問を愚かに見せてくれます。私はこれを見たことがないと信じられません。ありがとう。 –