2

2 つのテーブル内で値を追加するクエリを作成することは可能ですか。

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

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

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
4

5 に答える 5

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
于 2009-10-30T04:02:13.400 に答える
2

使用する:

  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
于 2009-10-30T04:14:42.673 に答える
1

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

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)
于 2009-10-30T04:36:53.690 に答える
0
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
于 2009-10-30T05:25:28.537 に答える
0
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が両方にある場合、合計が得られます

于 2009-10-30T13:24:15.307 に答える