Date Calcs, возможное использование функций секционирования / строки - PullRequest
0 голосов
/ 24 апреля 2018

У меня есть таблица, содержащая данные уровня счета, и у меня есть бизнес-запрос на создание таблицы, содержащей доллары New Business, которые будут присуждены торговым представителям.

Вот логика:

  1. Если в течение последних 6 месяцев этому клиенту не было совершено продаж или если клиент является новым клиентом (в таблице не существует), учитывайте продажу как «новый бизнес».
  2. Кредит New Business будет действовать в течение следующих 3 месяцев после первой квалифицированной продажи «New Business».

Структура таблицы (для простоты)

 Customer # - Invoice # - Invoice Dt - Total $$

Звучит достаточно просто, но у меня возникли некоторые проблемы с его оформлением в sql. Есть мысли?

1 Ответ

0 голосов
/ 24 апреля 2018

Сделайте этот шаг за шагом

Предыдущие клиенты (более 3 месяцев, но менее 6 месяцев)

 SELECT CustomerNo
 FROM TABLE_NAME_YOU_DID_NOT_TELL_US
 WHERE InvoiceDt > CURRENT_DATE - 6 MONTHS -- newer than 6 months
   AND InvoiceDt < CURRENT_DATE - 3 MONTHS -- older than 3 months

Теперь возьмите все за последние 3 месяца, кроме тех, которые

 CREATE VIEW NEW_CUSTOMERS AS 

 SELECT *
 FROM TABLE_NAME_YOU_DID_NOT_TELL_US
 WHERE InvoiceDt > CURRENT_DATE - 3 MONTHS -- newer than 3 months
  AND CustomerNo NOT IN (
   SELECT CustomerNo
   FROM TABLE_NAME_YOU_DID_NOT_TELL_US
   WHERE InvoiceDt > CURRENT_DATE - 6 MONTHS -- newer than 6 months
     AND InvoiceDt < CURRENT_DATE - 3 MONTHS -- older than 3 months
 )

Вы также можете сделать это с помощью объединения.

...