在SELECT语句SQL的其他聚合函数中使用聚合函数

在SELECT语句SQL的其他聚合函数中使用聚合函数,sql,sql-server,Sql,Sql Server,我有一个相当大的聚合函数,我必须在另一个专栏中使用两次,有没有一种方法可以把它写下来,而不必把第一个函数写三次? 所以我想要这样的东西: Select volumet = CASE When sum(volume)>200, then 200 Else sum(volume) END, sum(volumet * price) / volumet - price2 * volumet as Profit FROM tablex 根据你原来的帖子,像这样的东西应该是你想要的 WI

我有一个相当大的聚合函数,我必须在另一个专栏中使用两次,有没有一种方法可以把它写下来,而不必把第一个函数写三次? 所以我想要这样的东西:

Select
volumet =
CASE When sum(volume)>200, then 200
     Else sum(volume)
END,
sum(volumet * price) / volumet - price2 * volumet as Profit
FROM tablex

根据你原来的帖子,像这样的东西应该是你想要的

WITH CTE 
AS
(
    SELECT
        sum(volumet) AS volumet
    ,   price
    ,   price2
    FROM tablex
    group by price, price2
)
, VolumetValues as
(
    select case when volumet > 200 then 200 else volumet end as volumet
        , price
        , price2
    from CTE
)

SELECT 
    (volumet * price) / volumet - price2 * volumet as Profit
FROM VolumetValues

你们能在存储过程中做到这一点吗…Thx伙计们,我想我现在可以让它工作了!如果您觉得其中一个答案就是回答您问题的答案,请选中答案旁边的复选框。你也可以随意投票选出任何你认为好的和有帮助的答案。那是行不通的。因为您使用的是聚合作为查询的基础,所以这里会缺少一组列。您需要将volumet、price和price2添加到子查询中。是的,这是完整答案的方向,而不是整个答案的方向。再说一次,我们没有完整的模式,是吗?但好的,我将在中编辑这些列。
WITH CTE 
AS
(
    SELECT
        sum(volumet) AS volumet
    ,   price
    ,   price2
    FROM tablex
    group by price, price2
)
, VolumetValues as
(
    select case when volumet > 200 then 200 else volumet end as volumet
        , price
        , price2
    from CTE
)

SELECT 
    (volumet * price) / volumet - price2 * volumet as Profit
FROM VolumetValues