在 SQL 中,如何在不使用大小写的情况下将两个查询合并为一个?
Posted
技术标签:
【中文标题】在 SQL 中,如何在不使用大小写的情况下将两个查询合并为一个?【英文标题】:How to merge two queries into one without using case when in SQL? 【发布时间】:2021-03-08 03:36:02 【问题描述】:我有两个查询要放在一起:
查询 1
SELECT
SUM(sales) AS sales,
SUM(profit) AS profit
FROM X
WHERE site = 'de'
查询 2
SELECT
SUM(sales) AS sales_flag,
SUM(profit) AS profit_flag
FROM X
WHERE site = 'de'
AND flag = true
我想要这样的输出:
sales | sales_flag | profit | profit_flag
提前致谢。
【问题讨论】:
在同一查询中使用条件和,例如sum(case when flag = true then sales else 0 end) as sales_flag
。
Arvo 的建议是正确的。但至于你的问题:当你想组合两个查询的结果时,你使用 UNION。
【参考方案1】:
您可以使用条件聚合:
select
sum(sales) as sales,
sum(case when flag = true then sales end) as sales_flag,
sum(profit) as profit,
sum(case when profit = true then sales end) as profit_flag
from x
where site = 'de'
【讨论】:
以上是关于在 SQL 中,如何在不使用大小写的情况下将两个查询合并为一个?的主要内容,如果未能解决你的问题,请参考以下文章
如何在不使用数据透视的情况下将行转换或转置为 SQL 中的列?
如何在不等待结果的情况下将 SQL 查询发送到 PHP 中的数据库