SQL Group by不返回单行结果

时间:2014-07-18 05:46:59

标签: sql sql-server sql-server-2008 group-by

我尝试使用Sum,Count和Group By来编写一些SQL。

我的数据库服务器是Microsoft SQL Server 2008。

我的实际查询是非常复杂的连接多个表等,但我想我已经提出了一个简单的例子来说明我面临的问题。

我希望的是一行输出,总结符合条件的记录。

这是我的测试数据表

ID  Category (Char) Amount (int)    SubCategory (Char)
1   A               10                  X         
2   A               15                  X         
3   A               20                  X         
4   B               20                  X         
5   B               30                  X         
6   C               50                  Y         
7   A               60                  Y         
8   A               70                  Y         
9   B               80                  Y         
10  B               90                  Y         
11  B               80                  Y         
12  C               70                  Y         
13  C               60                  Y 

这是我到目前为止的SQL

SELECT [Category]
      ,Sum(Amount) as [Amount Sum]
      ,COUNT(Amount) as [Item Count]
      ,Count(Distinct[SubCategory]) as [SubCategory Count]
FROM [Test].[dbo].[TestTable]
Where Category = 'A'
Group by Category,[Subcatagory]

Select * from TestTable

我想要的结果就是这个

Category    Amount Sum  Item Count  SubCategory Count
A           175         5           2

但是我的结果是这样的

Category    Amount Sum  Item Count  SubCategory Count
A           45          3           1
A           130         2           1

我还有什么不值得尝试,有什么想法吗?

1 个答案:

答案 0 :(得分:1)

您应该GROUP BY仅按类别:

SELECT [Catagory]
  ,Sum(Amount) as [Amount Sum]
  ,COUNT(Amount) as [Item Count]
  ,Count(Distinct[SubCatagory]) as [SubCatagory Count]
FROM [Test].[dbo].[TestTable]
Where Catagory = 'A'
Group by Catagory