您好我正在学习编写SQL查询,我正在尝试查询分类帐表以选择字段“ENCID”,其中每个不同的ENCID在单独的文件“TDATE”中有超过4个不同的值。 然后按第3个字段“ITEMTYPE”过滤
这就是我所拥有的:
SELECT
[ENCID]
,[PATIENTID]
,[ITEMTYPE]
,[Service Date]
,[Transaction Date]
,[Trans]
,[PracticeName]
FROM TABLE1
WHERE ITEMTYPE = 'S'
AND ENCID IN (SELECT ENCID FROM TABLE1 WHERE Count(Distinct [Transaction Date]) >4
AND ITEMTYPE = 'S')
我收到此错误“DataSource.Error:Microsoft SQL:聚合可能不会出现在WHERE子句中,除非它位于HAVING子句或选择列表中包含的子查询中,并且要聚合的列是外部引用。“
答案 0 :(得分:1)
请改为尝试:
SELECT
[ENCID]
,[PATIENTID]
,[ITEMTYPE]
,[Service Date]
,[Transaction Date]
,[Trans]
,[PracticeName]
FROM TABLE1
WHERE ITEMTYPE = 'S'
AND ENCID IN (
SELECT ENCID
FROM TABLE1
WHERE ITEMTYPE = 'S'
GROUP BY ENCID
HAVING Count(Distinct [Transaction Date]) >4
AND MAX ([Transaction Date]) - MIN ([Transaction Date]) > 60
)
通常,聚合函数只能在SELECT
,HAVING
和ORDER BY
子句中使用(因为WHERE确切地确定正在聚合哪些记录)。
错误消息令人惊讶地详述的是WHERE可能包含聚合函数的唯一情况。比如这个:
SELECT a.id
FROM a
GROUP BY a.id
HAVING a.id IN (
SELECT b.a_id
FROM b
WHERE b.total = COUNT(a.something)
)