在SELECT中使用变量

时间:2016-02-16 15:19:09

标签: sql-server tsql

我需要外部选择以避免重复内部选择中的添加。

有没有在一个选择语句中执行此操作?例如,我可以为s1和s2设置变量吗?

否则,对于很长的聚合序列,我需要几个嵌套的选择,其中包含许多未更改的值。

SELECT
    s1,
    s2,
    s1 + s2
FROM
    (SELECT
        value1 + value2 AS s1,
        value3 + value4 AS s2
    FROM
        table1) a

2 个答案:

答案 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子句中使用s2SELECT,就像它们是普通的表字段一样。

答案 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