问题描述
您好,我正在表中插入多行,如下所示:
- 我创建了一个临时表,假设有 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
- 插入它们
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;