sql - 有什么方法可以使用 IN 和 COUNT 重写此查询?
问题描述
select count(patientNUM) as totalpatients
from [dbo] (nolock)
where patientId in (
'97210219',
'97210221',
'97210222'
)
50
100
20
因此,每个患者 ID 都包含患者数量,100、20 或 50。我想遍历每个患者行并将它们作为部分或全部丢失。例如,如果有 50 个患者 ID 行中的 40 个,它将列为部分。如果为 50,它将列为已满。有没有办法同时使用 count 或 in ?
所以基本上我想在第二列中创建两列,patientID 和 fullorpartial。
有没有办法遍历每一行并计算每一行,然后返回并比较第二列中的结果?
解决方案
因为我不知道您的数据到底是什么样子以及您想要什么。但是试试这个:
使用over
是一个不错的选择
select patientId,count(patientNUM) over(partition by patientId) as totalpatients
from [dbo] (nolock)
where patientId in (
'97210219',
'97210221',
'97210222'
)
这将计算每个患者 ID 的患者NUM 次。
关于'partialorfull' col 我认为可以通过使用来实现case
case
when patientId = '97210219' and totalpatients < 50 then 'partial'
when ...... --condition keep going on
else 'full'
end as partialorfull
推荐阅读
- jboss - 当我们更改系统时间时,hornetq 失败
- java - 未定义类型列表
- java - 如何将广义对象用于 2 个不同的类?
- javascript - 我可以使用 ::before content 使 div 成为可点击的链接吗?
- c++ - 无成本地将可变参数函数参数转发到另一个可变参数函数
- scala - 无法在火花中将有序数据写入镶木地板
- sql - 如何使用另一种列类型在 postgres 中聚合 Jsonb 列
- android - 如何在同一个片段上使用进度条和滑动刷新?
- jersey - (Jersy)如何编写不带参数的Get方法
- excel - 使用 Excel VBA,如何在 Word 文档中搜索特定单词并针对该单词插入注释?