Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 使用case语句显示列中两种类型值的计数_Sql - Fatal编程技术网

Sql 使用case语句显示列中两种类型值的计数

Sql 使用case语句显示列中两种类型值的计数,sql,Sql,需要在同一行上显示已尝试和已完成的值吗 SELECT qt.name, CASE WHEN qr.isfinished = 0 THEN COUNT(qr.resultid) END AS 'Attempted', CASE WHEN qr.isfinished = 1 THEN COUNT(qr.resultid) END AS 'Completed' 谢谢你的帮助 如果已完成为位,则无法在其上进行聚合。 案子就在伯

需要在同一行上显示已尝试和已完成的值吗

SELECT
    qt.name,
    CASE
        WHEN qr.isfinished = 0 THEN COUNT(qr.resultid) 
    END AS 'Attempted',
    CASE
        WHEN qr.isfinished = 1 THEN COUNT(qr.resultid) 
    END AS 'Completed'

谢谢你的帮助

如果
已完成
,则无法在其上进行聚合。
案子就在伯爵的办公室里

 Name        attempted  Completed
 --------------------------------
 Algebra I   114        NULL
 Algebra II   47        NULL
 ASVAB        55        NULL
 Algebra I   NULL       69
 Algebra II  NULL       55
 ASVAB       NULL       84

有多种方法可以做到这一点,例如,可以通过连接来实现,也可以使用group by,如下所示:

SELECT qt.name,
 count(Case when qr.isfinished = 0 THEN 1 END) as 'Attempted',
 count(Case when qr.isfinished = 1 THEN 1 END) as 'Completed'
FROM
 ...
GROUP BY
 qt.name
为了让它们在同一行上,您需要根据它们的共同点进行分组。根据您在问题中给出的信息,我假设这是qt.name


接下来,您可以使用总和聚合来获取每个字段的计数。符合每个项目标准的所有记录都计入总和,其他记录则不计入。您还可以将count与1和Null一起使用,我更喜欢使用Sum,因为如果需要,它可以允许加权合计

这运行了,但是它显示0,而不是null,并且仍然重复行=/和isfinished是位,感谢指针!不,你没有运行这个代码。计数不可能为空(等于零或大于零),也不可能用单个组复制行。我编辑了我的原始帖子以显示结果和查询。我的错误是,我有一个额外的GROUP by列。再次感谢你!那么,你想说点什么吗?
SELECT
    qt.name,
    SUM(CASE qr.isfinsihed WHEN 1 THEN 1 ELSE 0) AS 'Attempted',
    SUM(CASE qr.isfinished WHEN 0 THEN 1 ELSE 0) AS 'Completed'
FROM -- what ever your from clause is, it goes here --
GROUP BY
    qt.name