在Sql Server 2008中, 我在表中有3列。假设该表中的数据是这样的。
Invoice ID1 ID2 Count
149 281 318 0
149 281 346 0
149 318 281 0
149 318 346 0
149 346 281 0
149 346 318 0
现在,无论组合ID2-ID1还是ID1-ID2,我都希望得到独特的组合,两者都可以视为一个独特的组合。在上面的例子中,我需要结果为:
Invoice ID1 ID2 Count
149 281 318 2
149 281 346 2
149 318 346 2
提前致谢! 维基
答案 0 :(得分:2)
只有GROUP BY
这两列中较小的,较大的一行:
SELECT
Invoice,
CASE WHEN ID1 < ID2 THEN ID1 ELSE ID2 END AS ID1,
CASE WHEN ID1 < ID2 THEN ID2 ELSE ID1 END AS ID2,
COUNT(*) AS [Count]
FROM Table1
GROUP BY
Invoice,
CASE WHEN ID1 < ID2 THEN ID1 ELSE ID2 END,
CASE WHEN ID1 < ID2 THEN ID2 ELSE ID1 END