복붙노트

[SQL] 두 개의 서로 다른 곳 조항과 두 데이터 집합을 반환해야

SQL

두 개의 서로 다른 곳 조항과 두 데이터 집합을 반환해야

나는 거래를 추적 테이블이있다.

표는 설정이다 :

transactions:

id, account_id, budget_id, points, type

나는 점의 각 budget_id의 합계를 반환해야 어디 유형 = '할당'포인트의 합이 어디 유형 = '문제'

나는 있지만 둘 다 하나 개의 쿼리에서 각 작업을 수행하는 방법을 알고있다.

예상되는 결과 집합 :

budget_id   allocated   issued
   434       200000      100
   242       100000      5020
   621       45000       3940

해결법

  1. ==============================

    1.

    SELECT budget_id, 
           SUM(IF(type = 'allocation', points, 0)) AS allocated,
           SUM(IF(type = 'issue', points, 0)) AS issued
    FROM transactions
    GROUP BY budget_id
    
  2. ==============================

    2.

        select budget_ID, 
         sum(case when type = 'allocated' then points else 0 end) as allocated,
         sum(case when type = 'issued' then points else 0 end) as issued
         ..rest of your query...
        group by budget_ID
    

    케이스는 특정 조건이 충족되는 경우에만 요약 할 수 있습니다.

  3. from https://stackoverflow.com/questions/25254091/need-to-return-two-sets-of-data-with-two-different-where-clauses by cc-by-sa and MIT license