[英]SQL Server - Pivot two columns on a 3 column table
i'm a bit stuck with SQL pivot, I have a 3 column table like this: 我对SQL枢轴有些困惑,我有一个3列的表格,如下所示:
Name Color Date
TOM BLUE 10-10-2018
MAT RED 10-10-2018
TOM BLUE 11-11-2018
And I want an output like this: 我想要这样的输出:
10-10-2018 11-11-2018
TOM BLUE BLUE
MAT RED
Could anyone help me please? 有人可以帮我吗?
Based on the question How to pivot dynamically with date as column with some tweeks for your case: 基于以下问题: 如何根据日期将 t 列作为日期进行动态调整:
DECLARE @cols NVARCHAR (MAX);
SELECT @cols = COALESCE (@cols + ',[' + CONVERT(NVARCHAR, [DATE], 121) + ']',
'[' + CONVERT(NVARCHAR, [DATE], 121) + ']')
FROM (SELECT DISTINCT [DATE] FROM tablename) PV
ORDER BY [DATE]
DECLARE @query NVARCHAR(MAX)
SET @query = '
SELECT * FROM
(
SELECT * FROM tablename
) x
PIVOT
(
MIN(Color)
FOR [DATE] IN (' + @cols + ')
) p
'
EXEC SP_EXECUTESQL @query;
You could do this : 您可以这样做:
SELECT *
FROM temp
PIVOT(
MAX(Color)
FOR [Date] IN ([10-10-2018], [11-11-2018])
) PIV
ORDER BY Name DESC
IF you want to change NULL fields to empty, just use ISNULL(ColName, '')
如果要将NULL字段更改为空,只需使用ISNULL(ColName, '')
LIKE THIS 像这样
SELECT PIV.Name, ISNULL(PIV.[10-10-2018],''), ISNULL(PIV.[11-11-2018],'')
FROM temp
PIVOT(
MAX(Color)
FOR [Date] IN ([10-10-2018], [11-11-2018])
) PIV
ORDER BY Name DESC
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.