Нужна помощь в написании заявления по делу - PullRequest
1 голос
/ 25 марта 2011

Мне нужна помощь в написании оператора case, который позволит мне поместить данные в два разных сценария.

У меня есть данные около 10 миллионов строк, и мне нужно отфильтровать данные по времени.

Если данные примерно такие:

Существует столбец с именем CALL. Он состоит из времени звонка (означает, во сколько пришёл звонок).

Теперь сценарий таков: если вызов поступил между 8:00 и 12:00 (полдень), он должен относиться к одной категории, а если вызов проходит после 12:00 - 16:00, он должен относиться к другой категории.

Так должно быть что-то вроде этого:

case 
 when 
      call between (8am-12pm) then 'abc' 
 when
      call between (12pm- 4pm) then 'def'
 when 
      call after 4pm then it should comes under next day means next day morning 'abc'

Я знаю, может быть, это просто, но я не могу понять это.

Как это можно сделать?

1 Ответ

5 голосов
/ 25 марта 2011

Как насчет этого:

case
    when datepart(hour,[call]) < 8 then 'abc'
    when datepart(hour,[call]) between 8 and 11 then 'abc'
    when datepart(hour,[call]) between 12 and 15 then 'def'
    when datepart(hour,[call]) >= 16 then 'abc'
end

Очевидно, что первые два предложения можно объединить, но я не был уверен, что вы хотите делать со звонками с полуночи до 8 часов утра.

Редактировать Вы не указали, что происходит между 16:00 и 20:00, но вы должны быть в состоянии понять это!

Редактировать Исправлены предложения between (спасибо @Andriy). @Shahsra - теперь это означает, что значение call ровно в полдень перейдет в «def», а 11:59 - в «abc». Конечно, вы можете легко настроить его, если это не совсем то, что вы хотели. Главное, что datepart(hour,[call]) - это то, на чем вы должны основывать свои пункты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...