【发布时间】:2017-11-11 01:58:38
【问题描述】:
我有一张桌子
Date Item Quantity
20170101 Mango 5
20170101 Orange 6
20170102 Mango 7
20170102 Orange 8
我想要下面的输出
Date Mango Orange
20170101 5 6
20170102 7 8
为此我在下面使用了 sql 查询
SELECT
Date,
SUM(case when Item='Mango' then Quantity else 0 end) AS Mango,
SUM(case when Item='Orange' then Quantity else 0 end) AS Orange
FROM orderTable
GROUP BY date
但这对于 Mango 和 Orange 来说是一种硬编码。如果我需要 orderTable 中的新项目怎么办。任何人都可以建议我如何使这个查询动态化。因此,如果我添加新项目,它会自动创建以项目名称为名称的新库,并且当未为该项目下订单时,它将在列下相对于日期的值为 0。
喜欢
Date Item Quantity
20170101 Mango 5
20170101 Orange 6
20170102 Mango 7
20170102 Orange 8
20170102 Cherry 9
那么输出应该是...
Date Mango Orange Cherry
20170101 5 6 0
20170102 7 8 9
【问题讨论】:
-
如果一个苹果突然出现在表格中,你想要另一列吗?您使用的是哪个 dbms?
-
是的,MS SQL Server
-
尝试使用枢轴功能
标签: sql sql-server tsql pivot