使用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
我希望这是有道理的
答案 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的计算组成的派生表,并允许您轻松引用并总结它们!