这是我当前的表数据:
Godown_Column | Product_Column | 数量 |
---|---|---|
货仓 1 | 产品 1 | 10 |
货仓 1 | 产品 2 | 20 |
货仓 2 | 产品 3 | 30 |
仓库 3 | 产品 3 | 40 |
此处,Godowns_Columns
具有无限数量的具有不同仓库的行。
如何编写 SQL 查询来获得此结果:
Product_Col | 仓库 1 | 仓库 2 | 仓库 3 |
---|---|---|---|
产品 1 | 10 | ||
产品 2 | 20 | ||
产品 3 | 30 | 40 |
答案 0 :(得分:0)
WITH GODOWNS(Godown_Column, Product_Column, Quantity) AS
(
SELECT 'Godown 1', 'Product 1', 10 UNION ALL
SELECT 'Godown 1', 'Product 2', 20 UNION ALL
SELECT 'Godown 2', 'Product 3', 30 UNION ALL
SELECT 'Godown 3', 'Product 3', 40
)
SELECT D.Product_Column,
MAX(CASE WHEN Godown_Column='Godown 1' THEN QUANTITY ELSE 0 END)AS GODOWN_1,
MAX(CASE WHEN Godown_Column='Godown 2' THEN QUANTITY ELSE 0 END)AS GODOWN_2,
MAX(CASE WHEN Godown_Column='Godown 3' THEN QUANTITY ELSE 0 END)AS GODOWN_3
FROM GODOWNS AS D
GROUP BY D.Product_Column
GODOWNS 是您的数据示例。请将引用替换为对实际表的引用
答案 1 :(得分:0)
由于仓库数量未知,您可以使用动态枢轴。
架构:
create table mytable(Godown_Column varchar(50), Product_Column varchar(50), Quantity int)
insert into mytable values('Godown 1', 'Product 1' ,10);
insert into mytable values('Godown 1', 'Product 2' ,20);
insert into mytable values('Godown 2', 'Product 3' ,30);
insert into mytable values('Godown 3', 'Product 3' ,40);
查询:
DECLARE @cols AS NVARCHAR(MAX)='';
DECLARE @query AS NVARCHAR(MAX)='';
SET @cols = STUFF((SELECT distinct ',' + quotename(Godown_Column)
FROM mytable
FOR XML PATH(''), TYPE
).value('.', 'NVARCHAR(MAX)')
,1,1,'')
set @query = 'SELECT Product_Column,' + @cols + '
from
(
select * from mytable
) x
pivot
(
sum(quantity)
for Godown_Column in (' + @cols + ')
) p'
execute(@query)
输出:
Product_Column | 货仓 1 | 货仓 2 | 仓库3 |
---|---|---|---|
产品 1 | 10 | null | null |
产品 2 | 20 | null | null |
产品 3 | null | 30 | 40 |
db