【发布时间】:2020-01-28 05:44:45
【问题描述】:
我想用 SQL Server 中的 case 语句进行分组。我创建的案例是我的收入范围。我想计算所有这些收入范围内的销售订单数量(案例)
请在下面找到我的疑问:
Select
sum(OrderQuantity) as Orders,
case when (sum(SalesAmount-TaxAmt-Freight)<100 and sum(SalesAmount-TaxAmt-Freight)>=0) then '$0-$100'
when (sum(SalesAmount-TaxAmt-Freight)>=100 and sum(SalesAmount-TaxAmt-Freight)<500) then '$100-$500'
when (sum(SalesAmount-TaxAmt-Freight)>=500 and sum(SalesAmount-TaxAmt-Freight)<1000) then '$500-$1000'
when (sum(SalesAmount-TaxAmt-Freight)>=1000 and sum(SalesAmount-TaxAmt-Freight)<2500) then '$1000-$2500'
when (sum(SalesAmount-TaxAmt-Freight)>=2500 and sum(SalesAmount-TaxAmt-Freight)<5000) then '$2500-$5000'
when (sum(SalesAmount-TaxAmt-Freight)>=5000 and sum(SalesAmount-TaxAmt-Freight)<10000) then '$5000-$10000'
when (sum(SalesAmount-TaxAmt-Freight)>=10000 and sum(SalesAmount-TaxAmt-Freight)<50000) then '$10000-$50000'
when (sum(SalesAmount-TaxAmt-Freight)>=50000 and sum(SalesAmount-TaxAmt-Freight)<100000) then '$50000-$100000'
when (sum(SalesAmount-TaxAmt-Freight)>=100000) then '>$100000'
end as SalesAmountCategory
From
dbo.FactResellerSales
group by
SalesAmountCategory;
我希望得到如下结果:
当我尝试根据案例陈述进行分组时,我不断收到错误消息。错误是“列名 'SalesAmountCategory' 无效”。我怎样才能做到这一点?提前谢谢了!
【问题讨论】:
-
错误是什么?
-
错误信息是 Invalid column name 'SalesAmountCategory'。
-
感谢您的错误信息。您不需要
GROUP BY只需将其删除即可。SalesAmountCategory的别名是聚合公式的结果,因此不需要它作为分组依据。这类似于说SELECT sum(sales) as sum_of_sales FROM some_table GROUP BY sum_of_sales;充其量是多余的,最坏的情况是会引发错误(就像它在这里所做的那样)。 -
您好,我需要使用按功能分组,因为我想根据我刚刚创建的案例对订单号进行排序。很抱歉造成混乱。