【发布时间】:2019-08-23 03:39:03
【问题描述】:
我有一个数据集,其中包含每个“作业”记录的名称,以及作业是通过还是失败。我想在一行中显示名称、作业数量、通过的数量和失败的数量。
我正在对名称进行分组,并在名称上使用 COUNT 来计算作业总数,这工作正常,但如果不将它们添加到导致数据的 GROUP BY 子句中,我无法显示通过的数量和失败的数量再次分开。
SELECT I.Name, Count(I.Name) As NumberOfJobs,
CASE WHEN WI.resultTypeID = 1 THEN COUNT(WI.resultTypeID) END AS [Passed],
CASE WHEN WI.resultTypeID = 2 THEN COUNT(WI.resultTypeID) END AS [Failed],
FROM DB.DBO.People AS I
INNER JOIN DB2.dbo.Jobs AS WI ON I.JOBID = WI.JOBID
GROUP BY I.Name, wi.resultTypeID
+-----------+-----------+--------+--------+
| Name | NumofJobs | Passed | Failed |
+-----------+-----------+--------+--------+
| Dale Test | 2 | 2 | NULL |
| Dale Test | 2 | NULL | 2 |
+-----------+-----------+--------+--------+
当我将 ResultTypeID 添加到 GROUP BY 时会发生这种情况,但我想要这个:
+-----------+-----------+--------+--------+
| Name | NumofJobs | Passed | Failed |
+-----------+-----------+--------+--------+
| Dale Test | 4 | 2 | 2 |
+-----------+-----------+--------+--------+
有没有办法做到这一点?
【问题讨论】:
标签: sql sql-server