选择所有记录的计数和所有已完成记录的计数

时间:2017-09-20 06:32:22

标签: sql sql-server tsql

我有一些像这样的行数据......

ID   ParentID    IsCompleted
5    300         1
10   300         1
15   300         0
20   200         1
25   200         0

我想对此数据集进行查询并返回类似......

的内容
ParentID    Total   TotalCompleted
300         3       2
200         2       1

我不知道如何问这个问题所以我很抱歉,如果它太容易了。我做了一些研究,并认为我可能需要一个相关的查询,但在阅读和玩一些查询我无法让它工作。一些方向将是非常有用的

谢谢!

**注意** IsCompleted列是一种位数据类型,因此SQL服务器将抛出“操作数数据类型位对于sum运算符无效”错误。

2 个答案:

答案 0 :(得分:4)

COUNTSUM功能与GROUP BY一起使用。

<强>查询

select [ParentID], 
count(*) as [Total], 
sum(cast([IsCompleted] as int)) as [TotalCompleted]
from [your_table_name]
group by [ParentID];

答案 1 :(得分:1)

只需使用GROUP BY和聚合函数

即可
 SELECT ParentId,
     count(*) total,
     sum(iscompleted) totalCompleted
 FROM yourtab
 GROUP BY ParentId

编辑:

 SELECT ParentId,
     count(*) total,
     sum(CASE WHEN iscompleted THEN 1 ELSE 0 END) totalCompleted
 FROM yourtab
 GROUP BY ParentId