문제
두 테이블 내에 값을 추가하는 쿼리를 만들 수 있습니까?
예를 들어, 두 개의 테이블이 있다고 가정 해보십시오
id value
-- -----
a 1
c 2
d 3
f 4
g 5
그리고
id value
-- -----
a 1
b 2
c 3
d 4
e 5
그런 다음 두 테이블을 '추가'하면 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가 둘 다 있으면 합계를 얻게됩니다.
제휴하지 않습니다 StackOverflow