在 select 的列区域中使用聚合的列分配有什么作用?
What does a column assignment using an aggregate in the columns area of a select do?
我正在尝试破译另一个早已消失的程序员的代码,我在存储过程中遇到了一个 select 语句,看起来像这样(简化)示例:
SELECT #Table2.Col1, Table2.Col2, Table2.Col3, MysteryColumn = CASE WHEN y.Col3 IS NOT NULL THEN #Table2.MysteryColumn - y.Col3 ELSE #Table2.MysteryColumn END
INTO #Table1
FROM #Table2
LEFT OUTER JOIN (
SELECT Table3.Col1, Table3.Col2, Col3 = SUM(#Table3.Col3)
FROM Table3
INNER JOIN #Table4 ON Table4.Col1 = Table3.Col1 AND Table4.Col2 = Table3.Col2
GROUP BY Table3.Col1, Table3.Col2
) AS y ON #Table2.Col1 = y.Col1 AND #Table2.Col2 = y.Col2
WHERE #Table2.Col2 < @EnteredValue
我的问题是,主要 selection 的第四列是做什么的?它会产生一个布尔值检查以查看值是否相等吗?还是将#Table2.MysteryColumn 设置为某个值,然后将其插入#Table1?或者它只是更新 #Table2.MysteryColumn 而不是将值输出到 #Table1?
第三列的子查询中似乎也发生了同样的事情,我也同样不知所措。
MysteryColumn =
为表达式提供一个名称,也称为列别名。 table#2 中的一列也具有相同的名称这一事实是无关紧要的。
由于它使用 INTO
语法,因此它还在生成的临时 table 中为该列指定名称。参见 SELECT CLAUSE and note | column_alias = expression
and the INTO CLAUSE
我正在尝试破译另一个早已消失的程序员的代码,我在存储过程中遇到了一个 select 语句,看起来像这样(简化)示例:
SELECT #Table2.Col1, Table2.Col2, Table2.Col3, MysteryColumn = CASE WHEN y.Col3 IS NOT NULL THEN #Table2.MysteryColumn - y.Col3 ELSE #Table2.MysteryColumn END
INTO #Table1
FROM #Table2
LEFT OUTER JOIN (
SELECT Table3.Col1, Table3.Col2, Col3 = SUM(#Table3.Col3)
FROM Table3
INNER JOIN #Table4 ON Table4.Col1 = Table3.Col1 AND Table4.Col2 = Table3.Col2
GROUP BY Table3.Col1, Table3.Col2
) AS y ON #Table2.Col1 = y.Col1 AND #Table2.Col2 = y.Col2
WHERE #Table2.Col2 < @EnteredValue
我的问题是,主要 selection 的第四列是做什么的?它会产生一个布尔值检查以查看值是否相等吗?还是将#Table2.MysteryColumn 设置为某个值,然后将其插入#Table1?或者它只是更新 #Table2.MysteryColumn 而不是将值输出到 #Table1?
第三列的子查询中似乎也发生了同样的事情,我也同样不知所措。
MysteryColumn =
为表达式提供一个名称,也称为列别名。 table#2 中的一列也具有相同的名称这一事实是无关紧要的。
由于它使用 INTO
语法,因此它还在生成的临时 table 中为该列指定名称。参见 SELECT CLAUSE and note | column_alias = expression
and the INTO CLAUSE