我想在我的sql查询中限制虚拟计算列。我不知道该怎么做。 这是我的查询
select Distinct(Chief_Complaint), COUNT(Chief_Complaint) as 'No. of Cases
Encountered(January)', COUNT(Chief_Complaint) as 'No. of Cases Encountered(February)'
from Medical_Treatment
group by Chief_Complaint
列Chief_Complaint是一个字符串
我想在COUNT(Chief_Complaint)中添加限制为'否。遇到的案件(一月)'这样它只会计算从我的日期列开始的1月份的不同值的数量,以及COUNT(Chief_Complaint)中的不同值的数量为'否。遇到的案件(二月)'哪个月是二月 那可能吗?对不起我的英文
感谢您的回复。
答案 0 :(得分:0)
这样的事情会对你有用吗。
CREATE TABLE #Complaint(
id INT IDENTITY(1,1)
,Chief_Complaint NVARCHAR(100)
,ComplaintDate DATETIME
)
INSERT INTO #Complaint
( Chief_Complaint, ComplaintDate)
VALUES
( 'Complaint1', '20160101')
,( 'Complaint1', '20160101')
,( 'Complaint1', '20160101')
,( 'Complaint2', '20160101')
,( 'Complaint2', '20160101')
,( 'Complaint3', '20160101')
,( 'Complaint1', '20160201')
,( 'Complaint1', '20160201')
,( 'Complaint2', '20160201')
,( 'Complaint2', '20160201')
,( 'Complaint2', '20160201')
;WITH cteComplaints
AS(
SELECT
C.Chief_Complaint
,CASE WHEN DATENAME( month, C.ComplaintDate ) = 'January'
THEN COUNT( C.Chief_Complaint)
END 'January_CASES'
,CASE WHEN DATENAME( month, C.ComplaintDate ) = 'February'
THEN COUNT( C.Chief_Complaint)
END 'February_CASES'
FROM
#Complaint C
GROUP BY
C.Chief_Complaint,DATENAME( month, C.ComplaintDate )
)
SELECT
C.Chief_Complaint
,SUM(ISNULL(C.January_CASES,0)) 'January_CASES'
,SUM(ISNULL(C.February_CASES,0)) 'February_CASES'
FROM
cteComplaints C
GROUP BY
C.Chief_Complaint
DROP TABLE #Complaint