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

问题描述

您好,我正在表中插入多行,如下所示:

  1. 我创建了一个临时表,假设有 3 列 [Column1]、[Column2] 和 [Column3]:
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,Column3)
FROM #temp

现在我的问题是,当 Column3 在 temp 中计算时,它会从 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;