在2列的基础上获得独特的组合

时间:2014-05-07 14:27:37

标签: sql sql-server-2008

在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

提前致谢! 维基

1 个答案:

答案 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