0

これはとても簡単に思えますが、私はそれを行う方法を理解できないようです。私は2つのデータセットを持っています:

SET1
DATE       | TOTAL1 | TOTAL2 | TOTAL3
1 Jun 2013 | 0      | 0      | 5
2 Jun 2013 | 0      | 0      | 12
3 Jun 2013 | 0      | 0      | 34
4 Jun 2013 | 0      | 0      | 50

SET2
DATE       | TOTAL1 | TOTAL2 | TOTAL3
1 Jun 2013 | 1      | 2      | 0
2 Jun 2013 | 4      | 12     | 0
3 Jun 2013 | 5      | 12     | 0
4 Jun 2013 | 6      | 10     | 0

これらの 2 つのセットを次のようにマージする 3 番目のデータセットを作成したいと思います。

SET3
DATE       | TOTAL1 | TOTAL2 | TOTAL3
1 Jun 2013 | 1      | 2      | 5
2 Jun 2013 | 4      | 12     | 12
3 Jun 2013 | 5      | 12     | 34
4 Jun 2013 | 6      | 10     | 50

テーブルの結合が機能しません。日付が一致した場合に合計を追加する方法でそれらを結合する必要があります。これを行う方法はありますか?

4

5 に答える 5

5
SELECT
     DATE,
     SUM(TOTAL1) AS TOTAL1,
     SUM(TOTAL2) AS TOTAL2,
     SUM(TOTAL3) AS TOTAL3
FROM
(
     SELECT
          DATE,
          TOTAL1,
          TOTAL2,
          TOTAL3
     FROM
         SET1

     UNION ALL

     SELECT
          DATE,
          TOTAL1,
          TOTAL2,
          TOTAL3
     FROM
         SET2
) SubQueryAlias
GROUP BY
     DATE
于 2013-07-01T13:45:09.553 に答える
2

私はあなたが欲しいと推測していますFULL JOIN

SELECT  COALESCE(T1.DATE,T2.DATE) AS DATE,
        COALESCE(T1.TOTAL1,0)+COALESCE(T2.TOTAL1,0) AS TOTAL1,
        COALESCE(T1.TOTAL2,0)+COALESCE(T2.TOTAL2,0) AS TOTAL2,
        COALESCE(T1.TOTAL3,0)+COALESCE(T2.TOTAL3,0) AS TOTAL3
FROM Table1 T1
FULL JOIN Table2 T2
    ON T1.DATE = T2.DATE
于 2013-07-01T13:45:41.203 に答える
0

同様のものを使用できます:

INSERT INTO set3 (date,Total1,Total2,Total3)
    SELECT s1.date
       ,case when s1.date=s2.date then s1.Total1+s2.Total1 end as Total1
       ,case when s1.date=s2.date then s1.Total2+s2.Total2 end as Total2
       ,case when s1.date=s2.date then s1.Total3+s2.Total3 end as Total3
    FROM set1 s1, set2 s2
    WHERE s1.date=s2.date

同じ日付の列を追加する場合にのみ機能します。日付が異なる行は処理されません...

于 2013-07-01T14:00:01.893 に答える
0

結合を実行したいのですが、列に明示的に名前を付けます。たとえば、次のようになります。

SELECT Date, T1.Total1 + T2.Total1 AS TOTAL1, ...
FROM T1 JOIN T2 ON T1.Date = T2.Date
于 2013-07-01T13:42:41.417 に答える