此select语句的正确sql脚本是什么?
这是我的剧本此select语句的正确sql脚本是什么?,sql,sql-server,sql-server-2000,pivot,Sql,Sql Server,Sql Server 2000,Pivot,这是我的剧本 SELECT iBranch_num, CASE WHEN iPatient_typ=1 THEN COUNT(iPatient_num) ELSE 0 END AS [New Patient], CASE WHEN iPatient_typ=2 THEN COUNT(iPatient_num) ELSE 0 END AS [Buying Patient], CASE WHEN iPatient_typ=3 THEN COUNT(
SELECT iBranch_num,
CASE WHEN iPatient_typ=1 THEN COUNT(iPatient_num) ELSE 0 END AS [New Patient],
CASE WHEN iPatient_typ=2 THEN COUNT(iPatient_num) ELSE 0 END AS [Buying Patient],
CASE WHEN iPatient_typ=3 THEN COUNT(iPatient_num) ELSE 0 END AS [Active Patient],
CASE WHEN iPatient_typ=4 THEN COUNT(iPatient_num) ELSE 0 END AS [Inactive Patient]
FROM tblsotransaction
WHERE iStatus_typ=1
AND iApply_dt BETWEEN 20130401 AND 20130408
AND iBranch_num=14
GROUP BY iBranch_num, iPatient_typ
当前结果:
14, 25, 0, 0, 0
14, 0, 8, 0, 0
14, 0, 0, 97, 0
14, 0, 0, 0, 2
我希望结果是这样的
14, 25, 8, 9, 2
将整个
CASE
表达式包装在聚合函数COUNT
中,并从GROUP BY
子句中删除iPartient\u typ
:
SELECT
iBranch_num,
COUNT(CASE WHEN iPatient_typ=1 THEN iPatient_num ELSE 0 END) AS [New Patient],
COUNT(CASE WHEN iPatient_typ=2 THEN iPatient_num ELSE 0 END) AS [Buying Patient],
COUNT(CASE WHEN iPatient_typ=3 THEN iPatient_num ELSE 0 END) AS [Active Patient],
COUNT(CASE WHEN iPatient_typ=4 THEN iPatient_num ELSE 0 END) AS [Inactive Patient]
FROM tblsotransaction
WHERE iStatus_typ = 1
AND iApply_dt BETWEEN 20130401 AND 20130408
AND iBranch_num = 14
GROUP BY iBranch_num;
或:求和
:
SELECT
iBranch_num,
SUM(CASE WHEN iPatient_typ = 1 THEN 1 ELSE 0 END) AS [New Patient],
SUM(CASE WHEN iPatient_typ = 2 THEN 1 ELSE 0 END) AS [Buying Patient],
SUM(CASE WHEN iPatient_typ = 3 THEN 1 ELSE 0 END) AS [Active Patient],
SUM(CASE WHEN iPatient_typ = 4 THEN 1 ELSE 0 END) AS [Inactive Patient]
FROM tblsotransaction
WHERE iStatus_typ = 1
AND iApply_dt BETWEEN 20130401 AND 20130408
AND iBranch_num = 14
GROUP BY iBranch_num;
您正在使用什么RDBMS?是SQL server吗?我得到了与此相同的结果acript@odlanyer-抱歉,从
GROUP BY
子句中删除iPartient\u typ
,我更新了我的答案。无法对包含聚合或子查询的表达式执行聚合函数。在您的第二个答案中,结果正确,但计数是三倍!