1

使用 MS SQL 2012

我想做类似的事情

select a, b, c, a+b+c d

但是 a、b、c 是复杂的计算列,让我们举一个简单的例子

select case when x > 4 then 4 else x end a,
     ( select count(*) somethingElse) b,
     a + b c
order by c

我希望这是有道理的

4

3 回答 3

4

为此,您可以使用嵌套查询或公用表表达式 (CTE)。CTE 语法稍微干净一些——这里是:

WITH CTE (a, b)
AS
(
    select
        case when x > 4 then 4 else x end a,
        count(*) somethingElse b
    from my_table
)
SELECT
    a, b, (a+b) as c
FROM CTE
ORDER BY c
于 2013-10-23T02:10:55.867 回答
3

我可能会这样做:

SELECT
    sub.a,
    sub.b,
    (sub.a + sub.b) as c,
FROM
(
    select 
        case when x > 4 then 4 else x end a,
        (select count(*) somethingElse) b
    FROM MyTable 
) sub
ORDER BY c
于 2013-10-23T02:09:03.950 回答
0

最简单的方法是这样做:

select a,b,c,a+b+c d
from (select <whatever your calcs are for a,b,c>) x
order by c

这只是创建了一个包含您对 a、b 和 c 的计算的派生表,并允许您轻松引用和总结它们!

于 2013-10-23T02:08:47.150 回答