【发布时间】:2019-07-10 10:39:10
【问题描述】:
我正在使用以下 SQL 查询返回一个包含 4 列的表 Year、Month、Quantity Sold、Stock_Code,
SELECT yr, mon, sum(Quantity) as Quantity, STOCK_CODE
FROM [All Stock Purchased]
group by yr, mon, stock_code
order by yr, mon, stock_code
这是一些数据的示例,但我有大约 3000 个 Stock_Codes 和大约 40 个 x yr/mon 组合。
yr mon Quantity STOCK_CODE
2015 4 42 100105
2015 4 220 100135
2015 4 1 100237
2015 4 2 100252
2015 4 1 100277
我想将其转换为一个表格,其中每个 SKU 有一行,每个年/月组合都有列。
我以前从未使用过 Pivot,所以做了一些研究并创建了一个我认为应该可以工作的 SQL 查询。
select * from
(SELECT yr,
mon, Quantity,
STOCK_CODE
FROM [All Stock Purchased]) AS BaseData
pivot (
sum(Quantity)
For Stock_Code
in ([4 2015],[5 2015] ...........
) as PivotTable
此查询返回一个表,其中 Yr 作为 col1,Mon 作为 col2,然后 4 2015 等作为后续列。而我希望 col1 是 Stock_Code 并且 col2 显示 2015 年 4 销售的股票代码的数量。
真的很想了解我上面的代码有什么问题。
【问题讨论】:
-
请提供符合预期结果的样本数据
标签: sql sql-server pivot sql-server-2016