prosource

두 표에서 여러 열의 합 가져오기

probook 2023. 8. 11. 22:23
반응형

두 표에서 여러 열의 합 가져오기

두 개의 서로 다른 테이블에서 여러 열의 합계를 가져오려고 합니다(이 테이블은 동일한 구조를 공유합니다).

테이블을 하나만 고려하면 다음과 같은 쿼리를 작성할 수 있습니다.

SELECT MONTH_REF, SUM(amount1), SUM(amount2)
    FROM T_FOO
    WHERE seller = XXX
    GROUP BY MONTH_REF;

하지만, 저는 T_BAR 테이블의 데이터로도 작업하고 싶습니다. 그리고 나서,select다음 열을 반환하는 쿼리:

  • 월_참조
  • SUM(T_FOO.금액1) + SUM(T_BAR.금액1)
  • SUM(T_FOO.금액2) + SUM(T_BAR.금액2)

의 가치로 분류된 모든 것MONTH_REF.

주어진 기록에 유의하십시오.MONTH_REF한 테이블에서는 찾을 수 있지만 다른 테이블에서는 찾을 수 없습니다.이 경우, 저는 다음의 합계를 얻고 싶습니다.T_FOO.amount1 + 0(또는)0 + T_BAR.amount1).

이 정보를 얻으려면 어떻게 SQL 쿼리를 작성해야 합니까?

참고로 제 데이터베이스는 Oracle 10g입니다.

그룹 앞에 테이블을 통합할 수 있는 방법은 다음과 같습니다(참고로 Oracle에서는 다음과 같습니다).

SELECT t.month_ref, SUM(t.amount1), SUM(t.amount2)
  FROM (SELECT month_ref, amount1, amount2
          FROM T_FOO
         WHERE seller = XXX
         UNION ALL
        SELECT month_ref, amount1, amount2
          FROM T_BAR
         WHERE seller = XXX
         ) t
 GROUP BY t.month_ref

테이블을 셀러 필드와 결합하고 나중에 필터링할 수도 있습니다(고급 로직이 필요한 경우).

 SELECT t.month_ref, SUM(t.amount1), SUM(t.amount2)
   FROM (SELECT month_ref, amount1, amount2, seller
           FROM T_FOO
          UNION ALL
         SELECT month_ref, amount1, amount2, seller
           FROM T_BAR) t
  where t.seller = XXX
  GROUP BY t.month_ref

조합을 사용해 본 적이 있습니까?

SELECT MONTH_REF, SUM(amount1), SUM(amount2)
FROM (
  SELECT MONTH_REF, SUM(amount1) AS amount1, SUM(amount2) as amount2
      FROM T_FOO
      WHERE seller = XXX
      GROUP BY MONTH_REF
  UNION ALL SELECT MONTH_REF, SUM(amount1), SUM(amount2)
      FROM T_BAR
      WHERE seller = XXX
      GROUP BY MONTH_REF
  ) tmp
GROUP BY MONTH_REF

또는 외부 조인도 작동해야 합니다.

SELECT month_ref, 
       SUM(t_foo.amount1) + SUM(t_bar.amount1), 
       SUM(t_foo.amount2)+SUM(t_bar.amount2)
FROM   t_foo FULL OUTER JOIN t_bar
       ON t_foo.month_ref = t_bar.month_ref
GROUP BY month_ref

는 마침내 리븐의 대답을 사용하여 이것을 작동시킵니다.

올바른 코드는 다음과 같습니다(amount1 = ...내 환경에서 작동하지 않습니다. 그리고 너무 많습니다.;쿼리에서):

SELECT MONTH_REF, SUM(sumAmount1), SUM(sumAmount2)
FROM (
  SELECT MONTH_REF, SUM(amount1) as sumAmount1, SUM(amount2) as sumAmount1
      FROM T_FOO
      WHERE seller = XXX
      GROUP BY MONTH_REF
  UNION ALL SELECT MONTH_REF, SUM(amount1), SUM(amount2)
      FROM T_BAR
      WHERE seller = XXX
      GROUP BY MONTH_REF
  ) tmp
GROUP BY MONTH_REF
SELECT (SELECT SUM(amount) from debit) as debitamounts, (SELECT SUM(amount) from credit) as creditamounts

언급URL : https://stackoverflow.com/questions/1388216/getting-the-sum-of-several-columns-from-two-tables

반응형