我有一个这样的模式
demo(month_year(navarchar),datecount(int),destination(nvarchar),type(nvarchar))。
在输出中,我想将行转换为具有串联列的列。
datecount | Month_year | destination type
-------------------------+---------------+-------------------
07 | March - 18 | ABC No
23 | August - 2018 | ABC No
29 | August - 2018 | XYZ Sold Out
04 | July - 2018 | PQR Sold Out
10 | July - 2018 | XYZ No
25 | July - 2018 | ABC Sold Out
在我想要的输出中,
Month_Year 1 2 3 ...
July - 2018 04(Sold Out-PQR) 10(No-XYZ) 25(Sold Out-ABC)
August - 2018 23(No-ABC) 29(Sold Out-XYZ)
我已经尝试使用PIVOTE函数。面对该问题,以显示日期计数与目标和类型的组合(按预期输出)。但是无法解决。请帮我。
答案 0 :(得分:1)
只需将值连接起来再进行透视即可。
;WITH ToPivot AS
(
SELECT
D.month_year,
ConcatenatedValues = CONVERT(VARCHAR(10), D.datecount) + '(' + D.type + '-' + D.destination + ')',
NumberToPivot = ROW_NUMBER() OVER (PARTITION BY D.month_year ORDER BY D.datecount ASC)
FROM
Demo AS D
)
SELECT
P.*
FROM
ToPivot AS T
PIVOT (
MAX(T.ConcatenatedValues)
FOR T.NumberToPivot IN (
[1], [2], [3], [4], [5], [6], [7], [8], [9], [10],
[11], [12], [13], [14], [15], [16], [17], [18], [19],
[20], [21], [22], [23], [24], [25], [26], [27], [28],
[29], [30], [31])
) AS P