Группировать по заявлениям о делах SQL Сервер - PullRequest
1 голос
/ 28 января 2020

Я бы хотел сгруппировать по операторам case в SQL Server. Я создал кейсы, это мой диапазон доходов. Я хотел бы рассчитать количество заказов на продажу во всех этих диапазонах доходов (случаев)

Ниже, пожалуйста, найдите мои запросы:

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 »». Как я могу это сделать? Спасибо заранее!

1 Ответ

2 голосов
/ 28 января 2020

Похоже, вы хотите узнать количество заказов в каждой категории

Итак, вам нужно сначала сопоставить каждый заказ с категорией, а затем сгруппировать по ним, например:

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
...