GROUP BY CLAUSE USE

时间:2015-01-29 20:40:24

标签: sql group-by

我有一张包含不同付款方式类型的表格: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。

2 个答案:

答案 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