2012-06-19 4 views
0

Справка из SQL Gods ОбязательныйCase stement с Compex Sum условие Вызова

Таблица 1 - DistinctQuotes

Эта таблицы содержит информацию о котировки говорят.

Таким образом, мы имеем

+-------+-----------+--------------+------+-----------------+ 
|REGION | SubRegion | Market Route | Type | Quotations Count| 
+-------+-----------+--------------+------+-----------------+ 
|EMEA | Germany | Direct  | DS1 | 12    | 
|EMEA | Germany | NonDirect | DS1 | 22    | 
|EMEA | Germany | Direct  | DS1 | 2    | 
|EMEA | Germany | NOnDirect | DS1 | 4    | 
|EMEA | France | Direct  | DS1 | 4    | 
|EMEA | UK  | Direct  | DS1 | 4    | 
+-------+-----------+--------------+------+-----------------+ 

Так что я хочу, чтобы отобразить счетчик на субрегион котировок, поступивших от типа DS1 и Market Route является прямым.

Теперь этот запрос неверен, поскольку количество котировок происходит из суммы суммы котировок из соответствующих строк, а не из числа строк, которые соответствуют [Маркет Маршрут] = 'Прямой' И [Тип] = 'DS1'.

Может ли кто-нибудь помочь мне изменить запрос ниже, чтобы захватить то, что мне нужно?

SELECT   
[Region] ,[SubRegion]  
    ,SUM (CASE WHEN [Market Route] = 'Direct' AND [Type] = 'DS1' 
    THEN 1 ELSE 0 END)    as [Count of Direct quotes from DS1] 
FROM [dbo].[V_DistinctQuotes] 
    GROUP by [SubRegion],[Region] 

ответ

3

Просто измените THEN 1 ELSE 0 на THEN [Quotations Count] ELSE 0?

+0

Если это работает, вы гений! –

+0

Genius. Сэкономил мне часы работы! Спасибо . –

1

Будет ли это работать?

SELECT 
[Region] ,[SubRegion] ,Count(*) as [Count of Direct quotes from DS1] 
FROM [dbo].[V_DistinctQuotes] 
WHERE [Market Route] = 'Direct' AND [Type] = 'DS1' 
GROUP by [SubRegion],[Region] 
+0

ИНЕК подход может работать, но следует отметить, что, если есть область/Подрегион, что есть данные, но не соответствуют вашему ИНЕКЮ, что Регион/SubRegion не будет отображаться вообще. * (В отличие от того, чтобы выставить его с подсчетом '0'.) * – MatBailie

1

Не уверен, что правильно понял ваш вопрос, но если вы хотите подсчитать количество котировок (на самом деле SUM поля [Котировки]), где рыночный маршрут «Прямой», а Тип - «DS1», следующий:

SELECT   
[SubRegion],sum([Quotations Count]) 
from 
[dbo].[V_DistinctQuotes] 
where 
MarketRoute='Direct' and [Type] ='DS1' 

group by [SubRegion] 

, который дает:

SubRegion (No column name) 
France 4 
Germany 14 
UK  4 
Смежные вопросы