在 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 中的数据库

如何在不破坏SQL逻辑的情况下将JOINS转换为子查询

如何在不创建大缓冲区的情况下将 .NET 对象的大图序列化为 SQL Server BLOB?

SSIS 在不使用 SQL 的情况下将多行合并并连接成单行