我有2个表,它们具有相同的userID,类别,计数模式。我需要一个查询来汇总每个userID /类别对的计数。有时一对将存在于一个表中而不是另一个。我在进行连接时遇到麻烦,同时又不会丢失其中userID /类别对仅存在于1个表中的行。这是我正在尝试的方法(没有成功):
select a.user, a.category, count=a.count+b.count
from #temp1 a join #temp2 b
on a.user = b.user and a.category = b.category
例:
输入:
user category count
id1 catB 3
id2 catG 9
id3 catW 17
user category count
id1 catB 1
id2 catM 5
id3 catW 13
所需输出:
user category count
id1 catB 4
id2 catG 9
id2 catM 5
id3 catW 30
更新:“count”不是实际的列名称。在本示例中,我只是使用它,而忘记了它是保留字。
最佳答案
你需要:
另外,因为
COUNT
是保留字,所以我建议将其转义。因此,使用所有这些准则,您的查询将变为:
SELECT COALESCE(a.user, b.user) AS user,
COALESCE(a.category, b.category) AS category,
COALESCE(a.[count],0) + COALESCE(b.[count],0) AS [count]
FROM #temp1 AS a
FULL OUTER JOIN #temp2 AS b
ON a.user = b.user AND
a.category = b.category
关于sql - SQL连接而不会丢失行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17578744/