我需要外部选择以避免重复内部选择中的添加。
有没有在一个选择语句中执行此操作?例如,我可以为s1和s2设置变量吗?
否则,对于很长的聚合序列,我需要几个嵌套的选择,其中包含许多未更改的值。
SELECT
s1,
s2,
s1 + s2
FROM
(SELECT
value1 + value2 AS s1,
value3 + value4 AS s2
FROM
table1) a
答案 0 :(得分:0)
您可以使用CROSS APPLY
:
SELECT t.s1, t.s2
FROM table1
CROSS APPLY (SELECT value1 + value2 AS s1, value3 + value4 AS s2) AS t
然后,您可以在s1
子句中使用s2
和SELECT
,就像它们是普通的表字段一样。
答案 1 :(得分:0)
CROSS APPLY
并不是真的意味着用它来创建类似变量的东西,但实现这一点非常有用:
DECLARE @tbl TABLE(value1 VARCHAR(10),value2 VARCHAR(10),value3 VARCHAR(10),value4 VARCHAR(10));
INSERT INTO @tbl VALUES('a','b','c','d'),('e','f','g','h');
SELECT
s1,
s2,
s1 + s2
FROM @tbl AS tbl
CROSS APPLY
(SELECT
value1 + value2 AS s1,
value3 + value4 AS s2
) AS a