1
使用SQL Server 2012.SQL Server支持多個值
我有下表。樣式和顏色作爲參數傳遞:
Style Colour Size Whse Stock Sales 4WeekSales ATP
ABC123 AS12 10 London 2 3 6 7
ABC123 AS12 12 London 4 6 8 10
ABC123 AS12 14 New York 6 8 9 12
ABC123 AS12 10 New York 7 5 7 5
但需要的數據,看起來像這樣沿着頂部的大小:
Whse 10 12 14
Lon
Stock 2 4 6
Sales 3 6 8
4WeekSales 6 8 9
ATP 7 10 12
New York
Stock 7 6
Sales 5 8
4WeekSales 7 9
ATP 5 12
注意事項 - 大小字段需要動態 - 有時它可以是6/8/10/12,有時它可以是XS/S/M/L等。
也是他們超過兩個whse - 這只是一個例子。
我沒有做在T-SQL開始:
use SafetyStock
go
DECLARE @columns NVARCHAR(MAX), @sql NVARCHAR(MAX);
SET @columns = N'';
SELECT @columns += N', p.' + QUOTENAME(Size)
FROM (SELECT p.Size FROM dbo.vw_optimums AS p
GROUP BY p.Size) AS x;
SET @sql = N'
SELECT SKU, Style,' + STUFF(@columns, 1, 2, '') + '
FROM
(
SELECT SKU, Style, p.Size, p.SAFETYSTOCK
FROM dbo.vw_optimums AS p
) AS j
PIVOT
(
SUM(SAFETYSTOCK) FOR Size IN ('
+ STUFF(REPLACE(@columns, ', p.[', ',['), 1, 1, '')
+ ')
) AS p;';
PRINT @sql;
EXEC sp_executesql @sql;
然而,這適用於股票,但只有支點 - 如何做銷售我也樞紐\ 4WeekSales \ ATP和也由倉庫B族?
預先感謝您。
這是我最新的代碼。如果我將SEQNO取出,它會起作用,但我需要這樣才能使尺寸正確地顯示在頂部,例如S/M/L/XL/XXL等或6/8/10月12日
DECLARE @SizeColums VARCHAR(MAX)
DECLARE @Seq Integer
SELECT
@SizeColums = COALESCE(@SizeColums + ',','') + QUOTENAME([Size]),
@Seq = SEQNO
FROM vw_optimums1
GROUP BY [Size],[SEQNO]
ORDER BY [SEQNO]
DECLARE @Sql NVARCHAR(MAX) = N'
SELECT Whse,
[Types],' +
@SizeColums + '
FROM (SELECT * FROM vw_optimums1) t
UNPIVOT (
[Type]
FOR [Types] IN ([Stock],[LWSALES],[L4WSALES],[ATP])) up
PIVOT (
MAX([Type])
FOR [Size] IN (' + @SizeColums + ')
) p
'
EXEC sp_executesql @sql;
好極了,讓我檢查並回復你... – Michael
非常感謝你,數據看起來更好。 – Michael
我試過這個,但仔細檢查數據放在每個大小的每個大小的新行。我需要在一行中的數量全部爲whse。有任何想法嗎? – Michael