计算一个表中的行数并在另一个表中使用该变量联合

问题描述

我有兴趣完成以下工作: 我有两个表,我需要从两个患者类别的组合中选择总共 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 (将#修改为@)