如何从OPPatient与Pharmacy表中按指定格式查询Amtpaid总和
如何将两个表的聚合结果合并为同一行的两列?
现有OPPatient和Pharmacy两张表,执行以下SQL语句:
select SUM(Amtpaid) from OPPatient where startdate >= '2024-11-01' AND enddate < '2024-12-01' select Sum(Amtpaid) from Pharmacy where startdate >= '2024-11-01' AND enddate < '2024-12-01'
当前返回结果为单列两行的Amtpaid总和:
| AmtPaid |
|---|
| 10000 |
| 40000 |
需要将两个总和放在同一行的两列中,期望输出格式如下:
| OPPatientAmt | PharmacyAmt |
|---|---|
| 10000 | 40000 |
可以通过子查询或交叉连接的方式实现需求,以下是两种实用方案:
方案1:子查询作为列直接查询
这种写法简洁直观,适合少量聚合结果的合并:
SELECT (SELECT SUM(Amtpaid) FROM OPPatient WHERE startdate >= '2024-11-01' AND enddate < '2024-12-01') AS OPPatientAmt, (SELECT SUM(Amtpaid) FROM Pharmacy WHERE startdate >= '2024-11-01' AND enddate < '2024-12-01') AS PharmacyAmt
方案2:交叉连接独立聚合结果
如果后续需要扩展更多表的聚合结果,这种方式的扩展性更好:
SELECT op_total.Amtpaid AS OPPatientAmt, ph_total.Amtpaid AS PharmacyAmt FROM (SELECT SUM(Amtpaid) AS Amtpaid FROM OPPatient WHERE startdate >= '2024-11-01' AND enddate < '2024-12-01') op_total CROSS JOIN (SELECT SUM(Amtpaid) AS Amtpaid FROM Pharmacy WHERE startdate >= '2024-11-01' AND enddate < '2024-12-01') ph_total
注意:建议给两列设置不同的别名(比如示例中的OPPatientAmt和PharmacyAmt),避免重复列名造成阅读混淆。
内容的提问来源于stack exchange,提问作者Nickname
相关产品推荐
相关产品推荐

