将数据透视列整理为单列并更改SQL格式?
我有一个复杂的查询,结果如下:将数据透视列整理为单列并更改SQL格式?,sql,sql-server,Sql,Sql Server,我有一个复杂的查询,结果如下: PIVOT ( MAX([Name]) FOR [Name] In([Category1], [Category2], [Category3]) ) As pt pivot函数将多行数据合并到一行中。其中有些字段为空,有些字段具有类别标志。如果这些列中的任何一列都有值,如何输出一个为true的列;如果所有值都为null,如何输出一个为false的列?值为文本或null。另外,如何抑制或隐藏输出中的列?我正在寻找与MSSQL兼容的答案。您将该逻
PIVOT
(
MAX([Name])
FOR [Name] In([Category1], [Category2], [Category3])
) As pt
pivot函数将多行数据合并到一行中。其中有些字段为空,有些字段具有类别标志。如果这些列中的任何一列都有值,如何输出一个为true的列;如果所有值都为null,如何输出一个为false的列?值为文本或null。另外,如何抑制或隐藏输出中的列?我正在寻找与MSSQL兼容的答案。您将该逻辑添加到轴上方的select子句中
SELECT
id, [Category1], [Category2], [Category3]
, case when [Category1] is null and [Category2] is null and [Category3] is null
then 'False'
else 'True'
end your_ol_name
FROM yourtable
PIVOT
(
MAX([Name])
FOR [Name] In([Category1], [Category2], [Category3])
) As pt
注意,在同一个select子句中,您还可以在任何列上使用ISNULL或COALESCE。我不知道你压制或隐藏的目的是什么。也许这会对你有所帮助:
SELECT
id
, ISNULL([Category1],'-') Category1
, ISNULL([Category2],'-') Category2
, ISNULL([Category3],'-') Category3
, case when [Category1] is null and [Category2] is null and [Category3] is null
then 'False'
else 'True'
end your_ol_name
FROM yourtable
PIVOT
(
MAX([Name])
FOR [Name] In([Category1], [Category2], [Category3])
) As pt
你的问题现在解决了吗?你对这个答案还有疑问吗?要接受答案以了解更多信息,请参阅