如果 SQL Server 用于计算另一列列,它是否会考虑对上一列所做的转换?



你好,我在一个表中插入多行,如下所示:

  1. 我创建了一个临时表,比如说有3列[第1列]、[第2列]和[第3列]:
Create table #temp AS
SELECT
[Column1]
,CASE WHEN [Column1]=20 THEN 'YES' ELSE 'NO' END AS [Column2]
,CASE WHEN [Column2]='YES' THEN 'Huray' ELSE 'Boho' END AS [Column3]
FROM STG_Table
  1. 插入它们
INSERT Dest_Table
(
Column1
, Column2
, Column3)
SELECT
(Column1
, Column2
, Column3)
FROM #temp

现在我的问题是,当在temp中计算Column3时,它会采用STG中的值还是temp中新计算的值?

我希望我的问题是明确的

PS:我是一个不折不扣的

提前感谢

您可以像下面的代码一样尝试使用多级嵌套CTE,但我仍然认为,由于可能使用并行计算,每列的硬编码公式可能会更快。在CTE的情况下,它不会并行。您可以在您的环境中尝试这两种场景,并告诉我们哪种方式更快。

;WITH CTE1 as (SELECT [Column1], [Column2] = IIF([Column1]=20,'YES','NO') FROM STG_Table)
INSERT Dest_Table(Column1, Column2, Column3)
SELECT *, [Column3] = IIF([Column2]='YES','Huray','Boho') FROM CTE1;

相关内容

  • 没有找到相关文章

最新更新