You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从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

需要将两个总和放在同一行的两列中,期望输出格式如下:

OPPatientAmtPharmacyAmt
1000040000

可以通过子查询或交叉连接的方式实现需求,以下是两种实用方案:

方案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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 07:05:15