質問

2つのテーブル内に値を追加するクエリを作成することはできます:

たとえば、2つのテーブルがあるとします

id    value
--    -----
a       1
c       2
d       3
f       4
g       5

and

id     value
--     -----
a        1
b        2
c        3
d        4
e        5

2つのテーブルを「追加」すると、IDが一致する結果が得られます。したがって、a = 1 + 1 = 2で、そうでない場合は同じ結果になります。したがって、クエリは以下を返します。

id     value
--     -----
a       2
b       2
c       5
d       7
e       5
f       4
g       5
役に立ちましたか?

解決

おそらく次のようなもの

select coalesce(t1.id, t2.id) as id, (coalesce(t1.value, 0) + coalesce(t2.value, 0)) as value 
from table1 t1 full outer join table2 t2 on t1.id = t2.id

他のヒント

使用:

  SELECT x.id,
         SUM(x.value)
    FROM (SELECT t.id,
                 t.value
            FROM TABLE_1 t
          UNION ALL
          SELECT t2.id,
                 t2.value
            FROM TABLE_2 t2) x
GROUP BY x.id

このようにすることもできますが、他の答えはおそらく迅速です:

SELECT t1.id, t1.value + t2.value AS value
  FROM t1 INNER JOIN t2 ON t1.id = t2.id
UNION
SELECT t1.id, t1.value
  FROM t1
 WHERE t1.id NOT IN (SELECT t2.id FROM t2)
UNION
SELECT t2.id, t2.value
  FROM t2
 WHERE t2.id NOT IN (SELECT t1.id FROM t1)
SELECT
    COALESCE(t1.id, t2.id) AS id,
    COALESCE(t1.value, 0) + COALESCE(t2.value, 0) AS value
FROM
    t1
    FULL OUTER JOIN
    t2 ON t1.id = t2.id

または

SELECT
    foo.id,
    COALESCE(t1.value, 0) + COALESCE(t2.value, 0) AS value
FROM
    (
    SELECT t1.id FROM t1
    UNION
    SELECT t2.id FROM t2
    ) foo
    LEFT JOIN
    t1 ON foo.id = t1.id
    LEFT JOIN
    t2 ON foo.id = t2.id
SELECT ISNULL(T1.Col1.T2.Col1) as ID, (ISNULL(T1.Col2,0) + ISNULL(T2.Col2,0)) as SumCols
FROM T1 OUTER JOIN T2 ON T1.Col1 = T2.Col2

グループ化などはありません。以下のケースを処理します

IDがT1にあり、T2にない場合、T1で値を取得します。逆も同様です。これにより、双方向の包含が処理されます。

IDが両方にある場合、合計を取得します

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top