gpt4 book ai didi

sql-server - SQL Server - 使用 UNPIVOT 包含 NULL

转载 作者:行者123 更新时间:2023-12-02 00:43:15 25 4
gpt4 key购买 nike

UNPIVOT 不会返回 NULL,但我在比较查询中需要它们。我试图避免在以下示例中使用 ISNULL (因为在真实的 sql 中有超过 100 个字段):

Select ID, theValue, column_name
From
(select ID,
ISNULL(CAST([TheColumnToCompare] AS VarChar(1000)), '') as TheColumnToCompare
from MyView
where The_Date = '04/30/2009'
) MA
UNPIVOT
(theValue FOR column_name IN
([TheColumnToCompare])
) AS unpvt

还有其他选择吗?

最佳答案

要保留 NULL,请使用 CROSS JOIN ... CASE:

select a.ID, b.column_name
, column_value =
case b.column_name
when 'col1' then a.col1
when 'col2' then a.col2
when 'col3' then a.col3
when 'col4' then a.col4
end
from (
select ID, col1, col2, col3, col4
from table1
) a
cross join (
select 'col1' union all
select 'col2' union all
select 'col3' union all
select 'col4'
) b (column_name)

而不是:

select ID, column_name, column_value
From (
select ID, col1, col2, col3, col4
from table1
) a
unpivot (
column_value FOR column_name IN (
col1, col2, col3, col4)
) b

具有列模式的文本编辑器使此类查询更易于编写。 UltraEdit 有,Emacs 也有。在 Emacs 中,这称为矩形编辑。

您可能需要为 100 列编写脚本。

关于sql-server - SQL Server - 使用 UNPIVOT 包含 NULL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1002989/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com