重新格式化结果的 SQL 查询

标签 sql select db2

这是示例“销售”数据表 enter image description here

这里是想要输出的Result Set enter image description here


下面是一个不需要的结果集的例子,它会从此 SQL 语句生成。

SELECT Vendor, SUM(Markdown), SUM(Regular), SUM(Promotion), SUM(Returned)
FROM sales
GROUP BY Vendor, Date

enter image description here


有没有办法只通过SQL得到想要的结果集?

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

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

最佳答案

你需要使用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

关于重新格式化结果的 SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14615283/

相关文章:

SQL 语法 greatest-n-per-group + athena 中的聚合

sql - T-SQL : Deleting all duplicate rows but keeping one

mysql - 如何在mysql中缓存级联选择查询的子集

casting - DB2 日期时间值的字符串表示的语法不正确

java - 单元测试时支持H2数据库中的DB2功能

mysql - SQL order by 上面显示默认选项

mysql - 使用命名子查询 DELETE FROM

mysql - 如何从sql语句中选择准确的值

db2 - 如何从DB2撤消Windows Administrator用户的许可?

php - SQL/PHP - 计算结果并根据 HAVING 子句显示它们