Как создать запрос для получения счетов-фактур между датами (требуется помощь)

0

Вопрос

Мне нужно создать запрос в SQL, чтобы получить некоторые счета-фактуры в зависимости от текущей даты. Я стажер в компании, поэтому мне нужно только создать логику, а не обязательно запрос. Может ли кто-нибудь помочь мне перевести эти условия на SQL (Снежинка)?

  • Если текущая дата (сегодняшняя дата) находится между 14 и 27 днями месяца >>>>>> Получать счета-фактуры с 14 дня текущего месяца
  • Если текущая дата (сегодняшняя дата) находится между 28 и 31 днем месяца >>>>>> Получать счета-фактуры с 28 дня текущего месяца
  • Если текущая дата (сегодняшняя дата) находится между 1-м и 13-м днями месяца >>>>>> Получать счета-фактуры с 28 - го дня последнего месяца

Заранее спасибо!

snowflake-cloud-data-platform sql
2021-11-23 17:55:26
2

Лучший ответ

2

Я думаю, что ваш самый простой и понятный вариант-это изложение дела. Вы можете поместить это в свой выбор и работать с ним оттуда или поместить его непосредственно в предложение where. все, что больше подходит для вашего запроса.

WHERE invoice_date::DATE = (CASE WHEN DAY(current_date) between 14 and 27 then DATE_FROM_PARTS(YEAR(current_date), MONTH(current_date), 14)
                                 WHEN DAY(current_date) between 28 and 31 then DATE_FROM_PARTS(YEAR(current_date), MONTH(current_date), 28)
                                 WHEN DAY(current_date) between 1 and 13  then DATEADD('month', -1, DATE_FROM_PARTS(YEAR(current_date), MONTH(current_date), 28))
                                 END)
2021-11-23 18:04:49
0
select  
   current_date()+1 your_date
   ,dateadd(day,27-(sign(FLOOR(day(your_date)/14,0))*14) 
     ,dateadd(month,sign(FLOOR(day(your_date)/14,0))-1 
     ,date_trunc(month,your_date))) your_result

Пересмотренное решение.

Устранение неравенств и сокращение проблемы до кратных 14 с корректировками за месяц вместо нескольких заявлений о случаях (дорого для масштабирования).

enter image description here

2021-12-09 11:27:46

это может сработать, но код для меня довольно загадочный. Мне очень трудно взглянуть на это и понять/предсказать, какое значение будет возвращено на определенную дату. Я также не понимаю, почему он будет работать быстрее, так как ему нужно генерировать и сравнивать все даты, а не только одну.
David Garrison

Кроме того, я думаю, что вам нужен свой фильтр перед запуском GREATEST. Я не могу заставить это работать правильно для некоторых дат.
David Garrison

Работает быстрее, так как нет операторов case или предикатов неравенства. Вы были правы, мой предыдущий ответ не был проверен идеально - извините.
Adrian White

На других языках

Эта страница на других языках

Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................

Популярное в этой категории

Популярные вопросы в этой категории