如果 SQL 服务器用于计算另一列,它是否会考虑在前一列上完成的转换?

Does SQL Server take into consideration the transformations done on a previous column if it's used to calculate another one?

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

  1. 我创建了一个临时 table 假设有 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
, Column2
, 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;