我有一个遇到的表(相关的列名称:enc_id(guid)和enc_nbr(int))我有一张遭遇表(enc_id(guid))
我想生成一个enc_nbr的列表,其中相关的enc_id在10倍或更多的遭遇中显示。
我尝试过的:
select count(*) from encounters
where enc_id in (select count(enc_id) from encounter_notes having count(enc_id)>9)
这将产生以下错误:
操作符类型冲突:uniqueidentifier与int不兼容
您无法在guid
和number
之间进行比较。
您也可以使用CTE
实现它。
;WITH cte AS
(SELECT enc_id,
count(enc_id)
FROM encounter_notes
GROUP BY enc_id
HAVING count(enc_id)>9)
SELECT *
FROM encounters e
INNER JOIN cte ON e.enc_id = cte.enc_id
也许您正在寻找这样的东西:
SELECT
enc_id
,NumberOfOccurances = COUNT(*)
FROM ENCOUNTERS
GROUP BY enc_id
HAVING COUNT(*) > 9
HAVING
子句允许您在聚合函数上放置过滤器,而对于WHERE
子句则不能。对于所有出现超过9次的enc_id
值,此查询将返回每个enc_id
及其发生的次数。
编辑:
如果只想运行代码,则可以将其更改为:
select count(*)
from encounters
where enc_id in (select enc_id from encounter_notes having count(enc_id)>9)
您的子查询应返回GUID集(enc_id
),而不是不同值的数量。但这并不是很好的代码。如果可能的话,应该避免在WHERE子句中使用子查询,因为子查询最终将对外部查询中的每条记录执行。这需要很长时间。