繁体   English   中英

使用 Case 语句分组依据 SQL Server

[英]Group By with Case Statements SQL Server

我想使用 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;

我希望得到如下结果:

结果示例

当我尝试根据 case 语句进行分组时,我不断收到错误消息。 错误是“无效的列名‘SalesAmountCategory’”。 我怎样才能做到这一点? 提前谢谢了!

看起来您想知道每个类别的订单数量

因此,您首先需要将每个订单映射到类别,然后对其进行分组,如下所示:

select SalesAmountCategory, count(*) from
(
    Select case
        when ((SalesAmount-TaxAmt-Freight)>=100000) then '>$100000'
        when ((SalesAmount-TaxAmt-Freight)>=50000) then '$50000-$100000'
        when ((SalesAmount-TaxAmt-Freight)>=10000) then '$10000-$50000'
        when ((SalesAmount-TaxAmt-Freight)>=5000) then '$5000-$10000'
        when ((SalesAmount-TaxAmt-Freight)>=2500) then '$2500-$5000'
        when ((SalesAmount-TaxAmt-Freight)>=1000) then '$1000-$2500'
        when ((SalesAmount-TaxAmt-Freight)>=500) then '$500-$1000'
        when ((SalesAmount-TaxAmt-Freight)>=100) then '$100-$500'
        when ((SalesAmount-TaxAmt-Freight)<100) then '$0-$100'
        end as SalesAmountCategory
    From  dbo.FactResellerSales 
) as t
group by SalesAmountCategory

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM