我可以向Totals添加多个列

时间:2013-10-23 02:05:12

标签: sql sql-server

使用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

我希望这是有道理的

3 个答案:

答案 0 :(得分: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

答案 1 :(得分: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

答案 2 :(得分: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的计算组成的派生表,并允许您轻松引用并总结它们!