我有一张包含不同付款方式类型的表格:CHECK,MONEY ORDER,CASH。我需要显示不同付款类型的细分,以下是我的查询。任何人都可以建议或评论如何以最佳方式做到这一点。
select
COUNT(T3.PAY_METHOD),
T1.CLAIM_ID
from TB1 T3
JOIN TB2 T2 ON T3.CLAIM_ID = T2.CLAIM_ID
GROUP BY T3.PAYMENT_METHOD_CD
以下是输出列应该看
|CHECK|MONEY ORDER|CASHIER'S CHECK|CASH|CREDIT CARD|
显示通过CHECK收到的所有付款的总数,这些付款已应用于特定的LIABLE INDIVIDUAL。
答案 0 :(得分:0)
sql将是:
select T3.PAY_METHOD
, COUNT(T3.PAY_METHOD) records
from TB1 T3
JOIN TB2 T2 ON T3.CLAIM_ID = T2.CLAIM_ID
GROUP BY T3.PAY_METHOD
您可以使用应用程序代码格式化输出。
答案 1 :(得分:0)
如果您确实需要输出作为列,那么您将需要使用SUM(在method =''然后0 else 1 end)类型解决方案的情况下。像这样。
select t1.claim_id,
sum(case when t3.pay_method = 'CASH' then 1 else 0 end) as "CASH",
sum(case when t3.pay_method = 'MONEY ORDER' then 1 else 0 end) as "MONEY ORDER",
sum(case when t3.pay_method = 'CHECK' then 1 else 0 end) as "CHECK",
T1.CLAIM_ID
from TB1 T3
JOIN TB2 T2 ON T3.CLAIM_ID = T2.CLAIM_ID
GROUP BY T1.CLAIM_ID
但如果你只想把它们作为行,那就简单多了。
select T1.CLAIM_ID, T3.PAY_METHOD, COUNT(*)
from TB1 T3
JOIN TB2 T2 ON T3.CLAIM_ID = T2.CLAIM_ID
GROUP BY T1.CLAIM_ID, T3.PAY_METHOD