SQL Server不同的行数

时间:2014-06-06 21:53:31

标签: sql-server tsql

假设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。

请您告诉我获得预期结果的正确方法。

提前致谢。

2 个答案:

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