假设SQL Server中有以下表格:
ID Column1 Column2 Column3
1 1 2 10
1 1 2 20
2 1 2 30
2 1 2 40
3 3 4 50
3 3 4 60
3 3 4 70
我需要选择按Column1,Column2分组的Column3上的SUM,并选择带有DISTINCT“ID”的行数。考虑一下查询:
SELECT SUM(Column3) AS Column3
COUNT(*) AS Count
FROM MyTable
GROUP BY Column1,
Column2
结果将是:
Column3 Count
100 4
110 3
我希望得到:
Column3 Count
100 2
110 1
因此这里的计数将是DISTINCT“ID”值。 在第一行2中意味着有两个不同的ID值(1和2)具有相同的Column1,Column2 在第二行1表示只有一个不同的值(即3)具有相同的Column1,Column2。
请您告诉我获得预期结果的正确方法。
提前致谢。
答案 0 :(得分:1)
使用COUNT(DISTINCT)
:http://msdn.microsoft.com/en-us/library/ms175997.aspx
SELECT SUM(Column3) AS Column3
COUNT(DISTINCT ID) AS Count
FROM MyTable
GROUP BY Column1,
Column2
答案 1 :(得分:0)
不确定我是否理解你,但这有用吗?:
;WITH cte AS (SELECT ID, column1, column2, SUM(column3) AS column3sum FROM table GROUP BY id, column1, column2)
SELECT SUM(column3sum), COUNT(ID)
FROM cte
GROUP BY column1, column2