在 db2 中合并两个 select 语句的结果
Posted
技术标签:
【中文标题】在 db2 中合并两个 select 语句的结果【英文标题】:Combining results of two select statements in db2 【发布时间】:2021-09-03 16:10:30 【问题描述】:我对 SQL 相当陌生,我正在使用 db2。我有以下两个单独的查询,它们自己返回预期结果。但是,我希望将查询 2 的总数除以查询 1 的结果。
查询 1:
select count(*) total
from ltl400tst3.frp001
JOIN ETLLIB.CYMD_TO_DATE
ON fhpdat = cymd_date
left join ltl400mod3.pup092
on pcpro = fhpro
left join LTL400MOD3.PUP090
on PCNUM = PANUM and PCTID = PATID
left join ltl400mod3.pup300 on pctid = cotid and pcnum = conum and pcline = coline and fhccd = coccd
WHERE fhbtc in ('6A16579', '6R16579') and PASTAT != 'C' and DATE = '2021-09-01';
查询 2:
select Date, case cqtype when 'O' then 'Override' when 'S' then 'Alert' else 'Other' end record_type, count(*) total
from LTL400MOD3.PUP301
left join LTL400MOD3.PUP300
on COTID = CQTID and CONUM = CQNUM and COLINE = CQLINE
join ETLLIB.CYMD_TO_DATE
on (CAST(CQRSSTMP AS DATE)) = DATE
left join MASTER.ACCOUNT_HIERARCHY
on COCCD = ACCOUNT
where ((CQSACIID = '17') or (TOP_LEVEL_ACCOUNT = '0P16579')) and DATE = '2021-09-01'
group by date, CQTYPE;
我的第一个想法是使用 CTE,但我在格式化表达式以执行来自多个 CTE 的功能时遇到了一些困难。提前感谢您的任何建议。
【问题讨论】:
请用句点表示的表名(即tablename.Date
)限定所有列,并说明如何您希望这两个查询加入。您需要对这两个总数进行计算吗?
【参考方案1】:
我确信有更好的方法来实现您想要的,但由于您没有提供示例数据、业务逻辑或预期输出,我将尝试回答您的确切问题,而不是尝试重构您的查询.
with
query_1 (total) as (your_query_1_select_statement)
,query_2 (record_type, total) as (your_query_2_select_statement)
select record_type, total/(select total from query_1) as ratio
from query_2;
【讨论】:
以上是关于在 db2 中合并两个 select 语句的结果的主要内容,如果未能解决你的问题,请参考以下文章