2016-07-23 3 views
-1

У меня есть запрос, который фиксирует сумму с несколькими условиями (см. Ниже), однако я хотел бы сделать то же самое, но в случае case если возможно.сумма с несколькими условиями в sql-сервере

Оригинал запроса:

select 
sum(Total Cost) 
from Table 
where date between '7/20/2016' and '7/21/2016' 
and customer = "New Customer" 
and sales like 's%' 

Я пытаюсь положить, что в одном случае заявление.

select 
sum(case when total cost is not null then 1 else 
    case when customer = 'New Customer' then 1 else 
    case when sales like 's%' then 1 else 
    end end end 
from table 
where date between '7/20/2016' and '7/21/2016' 

Спасибо за помощь

+1

Редактировать свой вопрос и предоставить образцы данных и желаемые результаты. Ваша логика не имеет смысла. , , вам кажется, что выражение 'case' всегда возвращает 1. –

ответ

0

Я думаю, что вы ищете что-то вроде этого:

SELECT SUM(CASE WHEN customer = 'New Customer' AND sales LIKE 's%' THEN [Total Cost] END) 
FROM Table 
WHERE [date] BETWEEN '2016-07-20' AND '2016-07-21' 

Пожалуйста, обратите внимание - второй запрос в вашем вопросе эквивалентно count, не sum. Кроме того, при использовании строк для представления дат всегда используйте формат yyyy-mm-dd, чтобы избежать двусмысленности. В sql-сервере - 1/4/2016 может быть 1 апреля, но может также быть 4 января. Однако 2016-04-01 может быть только 1 апреля.

+0

спасибо за ответ ... база по запросу, который вы предоставили, я не получаю желаемый результат ... он возвращает нулевое значение , когда я запускаю первый запрос (оригинал), общая стоимость составляет до $ 80,463 – ZYK

+0

Затем, пожалуйста, отредактируйте свой вопрос, чтобы включить данные образца как DDL + DML и желаемые результаты. –