我正在尝试获取图表日期与患者数量。我正在尝试使用asp.net中的MS Chart制作图表,其中我获取x轴上的日期和y轴上的患者数量。 我接受日期和日期作为输入。我希望在每个日期之间的这两个日期之间有多少患者。我正在尝试以下内容
select
convert(varchar,creation_Date,105) as 'creation_Date',
count(Pat_ID)
FROM Patient_Ref_master
where
(CONVERT(VARCHAR(10),Patient_Ref_master.creation_Date,111) BETWEEN '2013/07/23' AND '2013/07/25')
group by Pat_ID
但是给我一个错误
Msg 8120, Level 16, State 1, Line 1
Column 'Patient_Ref_master.creation_Date' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.
我哪里出错。?请建议。 感谢
答案 0 :(得分:3)
按creation_Date
分组,而不是Pat_ID
答案 1 :(得分:1)
您还应该在Group By子句中包含Creation_Date。以下是正确的查询:
select
convert(varchar,creation_Date,105) as 'creation_Date',
count(Pat_ID)
FROM Patient_Ref_master
where
(CONVERT(VARCHAR(10),Patient_Ref_master.creation_Date,111) BETWEEN '2013/07/23' AND '2013/07/25')
group by creation_Date
答案 2 :(得分:1)
您希望计算患者的日期,因此日期需要在group by
子句中。但是,您需要确定它实际上是date
而不是datetime
。以下使用您的首选格式:
select convert(varchar,creation_Date, 105) as 'creation_Date',
count(Pat_ID) as Numpateitns
FROM Patient_Ref_master
where CONVERT(VARCHAR(10),Patient_Ref_master.creation_Date, 111) BETWEEN '2013/07/23' AND '2013/07/25'
group by convert(varchar,creation_Date, 105)
答案 3 :(得分:1)
您不会按Pat_ID分组,您希望按creation_Date分组,或者您的表达式是creation_Date。另外,我不会将你的日期转换为你的where子句中的varchars。只需将它们保留为日期时间。
select
convert(varchar,creation_Date,105) as 'creation_Date',
count(Pat_ID)
FROM Patient_Ref_master
where Patient_Ref_master.creation_Date >= convert(datetime,'2013/07/23')
AND Patient_Ref_master.creation_Date < dateadd(day,1,convert(datetime,'2013/07/25'))
group by convert(varchar,creation_Date,105)