我CASE
在T-SQL中的一个语句有问题
这是查询:
Select
CASE WHEN cri.ChartRetrievalMethodID IS NULL THEN wfseg.SiteEventGroupID
ELSE cri.ChartRetrievalMethodID END as Type,
count(distinct c.chartid) TotalCharts
From Sites s LEFT JOIN Charts c ON s.SiteID=c.SiteID
LEFT JOIN ChartRetrievalInformation cri ON c.ChartID=cri.ChartID
LEFT JOIN WFSiteEvents wfse ON wfse.SiteID=s.siteid
LEFT JOIN WFSiteEventTypes wfset ON wfset.EventTypeID=wfse.EventTypeID
LEFT JOIN WFSiteEventGroups wfseg ON wfset.SiteEventGroupID=wfseg.SiteEventGroupID
Where
wfse.EventStatusID in (1,2)
and s.ProjectID=110
group by
cri.ChartRetrievalMethodID, wfseg.SiteEventGroupID
我得到很多多行,而不是将它们合并成一个行-示例:
+------+--------------+
| Type | Total Charts |
+------+--------------+
| 3 | 28 |
| 3 | 3 |
+------+--------------+
理想情况下,我希望将这两行合并成一排:
+------+--------------+
| Type | Total Charts |
+------+--------------+
| 3 | 31 |
+------+--------------+
我敢肯定,我没有写错任何东西,但是我似乎看不到它是什么。
如果您将字段包含在cri.ChartRetrievalMethodID, wfseg.SiteEventGroupID
select语句的列列表中,那么您将很清楚为什么将这些字段显示在具有该分组的多行中。
您想要做的就是将要调用的值分组Type
。在另一个DBMS中,这很简单GROUP BY Type
,但是在SQL Server中,您必须在GROUP BY
子句中重复完整的表达式。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句