重新格式化结果的SQL查询

ada*_*dam 2 sql db2 select

以下是"销售"数据示例 在此输入图像描述

这是所需的输出结果集 在此输入图像描述


以下是将从此SQL语句生成的不需要的结果集的示例.

SELECT Vendor, SUM(Markdown), SUM(Regular), SUM(Promotion), SUM(Returned)
FROM sales
GROUP BY Vendor, Date
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述


有没有办法通过SQL获得所需的结果集?

我们在IBM iSeries上运行SQL DB2数据库.

我确实意识到这是尝试这样做的一种非常奇怪的方式......我们只是试图找到一种方法来根据需要恢复结果集,而无需通过代码对结果进行任何手动转换.

小智 6

你需要使用UNION声明

尝试,

SELECT Vendor, 'Markdown' as Type,  SUM(Markdown) as Amount 
FROM sales 
GROUP BY Vendor, Date

UNION

SELECT Vendor, 'Regular' as Type, SUM(Regular) as Amount  
FROM sales 
GROUP BY Vendor, Date

UNION

SELECT Vendor, 'Promotion' as Type, SUM(Promotion) as Amount 
FROM sales 
GROUP BY Vendor, Date

UNION

SELECT Vendor, 'Returned' as Type, SUM(Returned) as Amount 
FROM sales 
GROUP BY Vendor, Date
Run Code Online (Sandbox Code Playgroud)

  • +1和一个小小的注释:`union`必须'清楚'所有行,而`union all`则不行.由于所有行都明显不同,所以`union all`获胜. (3认同)