Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将数据透视列整理为单列并更改SQL格式?_Sql_Sql Server - Fatal编程技术网

将数据透视列整理为单列并更改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

你的问题现在解决了吗?你对这个答案还有疑问吗?要接受答案以了解更多信息,请参阅