使用 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
我希望这是有道理的
使用 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
我希望这是有道理的
为此,您可以使用嵌套查询或公用表表达式 (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
我可能会这样做:
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
最简单的方法是这样做:
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 的计算的派生表,并允许您轻松引用和总结它们!