使用变量简化SQL查询

Fel*_*kel 3 sql sql-server variables simplify

我想简化我的T-SQL查询.它是这样的:

SELECT

    t.a AS [Column A], 
    t.b AS [Column B],
    t.c AS [Column C],
    (t.a - t.b - t.c) AS [Column D],
    CASE
      WHEN (t.a - t.b - t.c) = 0 THEN 'Equals'
      WHEN (t.a - t.b - t.c) > 0 THEN 'Greater'
      WHEN (t.a - t.b - t.c) < 0 THEN 'Less'
    END AS [Status]          

FROM
    Table1 AS t;
Run Code Online (Sandbox Code Playgroud)

放入(t.a - t.b - t.c)变量会很好,所以我可以在它出现的所有地方重复使用它,因为表达式可能会随着时间的推移而改变.如果不显着改变现有查询,我无法弄清楚如何做到这一点.

Eri*_*ric 5

使用 Cross Apply

SELECT
    t.a AS [Column A], 
    t.b AS [Column B],
    t.c AS [Column C],
    [Column D],
    CASE
      WHEN [Column D] = 0 THEN 'Equals'
      WHEN [Column D] > 0 THEN 'Greater'
      WHEN [Column D] < 0 THEN 'Less'
    END AS [Status]          

FROM
    Table1 AS t
    CROSS APPLY (SELECT t.a - t.b - t.c AS [Column D]) AS t2
Run Code Online (Sandbox Code Playgroud)