问题描述
我有兴趣完成以下工作: 我有两个表,我需要从两个患者类别的组合中选择总共 20 个患者:
我最多需要第一个表中 A 类的前五个示例,比如说手术患者(可能是 0 到 5 之间的任何位置) 我需要余数 (20-n) 来自第二个表中的类别 B,假设是任何其他类型的患者。
通过从表 A 选择 TOP 5 和从表 B 选择 TOP 15 并使用 UNION 来完成此操作没有问题,但这仅适用于类别 A 中有 5 个或更多患者的情况。我真正想做的是存储在我的第一个查询中返回的行数,然后从第二个查询中使用 SELECT TOP (20-n) 但我不确定如何让它工作。任何人都可以帮助解决这个语法/逻辑吗?以下不起作用,因为我不确定如何声明变量并使用表别名和使用联合,或者这是否可能。谢谢!
(SELECT TOP 5
pata.patid "ID",min(zcenc.NAME) "ENCOUNTER TYPE"
FROM TABLEA pata
LEFT JOIN ENCOUNTER zcenc
ON pata.pat_id = zcenc.pat_id
WHERE ......
GROUP BY ....) sqa
UNION
(declare @n as int
set n = count(*)
FROM sqa;
(SELECT TOP (20-n)
patb.patid "ID",min(zcenc.NAME) "ENCOUNTER TYPE"
FROM TABLEA patb
LEFT JOIN ENCOUNTER zcenc
ON patb.pat_id = zcenc.pat_id
WHERE ......
GROUP BY ....)
)
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)