2015-01-29 5 views
0

다른 결제 수단 유형 (CHECK, MONEY ORDER, CASH)의 테이블이 있습니다. 나는 다른 지불 유형의 분해를 보여줄 필요가 있고, 나의 쿼리는 다음과 같다. 누구나 최선의 방법을 제안하거나 언급 할 수 있습니까? 다음죄송합니다. GROUP BY USING

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| 

표시 특정 책임 INDIVIDUAL에 적용된 CHECK 통해 수신 된 모든 결제의 총 수를 보여야한다.

답변

0

실제로 출력을 열로 사용해야하는 경우 SUM (method = '', then 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 
+0

감사합니다. 지불 방법에 대해 Rank() 함수를 사용할 수 있는지 궁금합니다. 모든 의견. – aajmee

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 

당신은 출력 형식을 응용 프로그램 코드를 사용할 수 있습니다.