0

我正在尝试获取图表日期与患者人数的关系。我正在尝试使用 asp.net 中的 MS Chart 制作图表,其中我在 x 轴上获得日期,在 y 轴上获得患者人数。我接受从 date 到 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 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.

我哪里错了。?请建议。谢谢

4

4 回答 4

3

分组creation_Date而不是Pat_ID

于 2013-07-25T18:53:52.447 回答
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
于 2013-07-25T18:51:55.577 回答
1

您想在某个日期对患者进行计数,因此该日期需要在group by子句中。但是,您需要确保它确实是 adate而不是 adatetime对于您正在做的事情。以下使用您的首选格式:

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)
于 2013-07-25T18:55:48.420 回答
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)
于 2013-07-25T18:55:50.063 回答