Ako vytvoriť dotaz dostať faktúr medzi dátumami (pomoc potrebná)

0

Otázka

Potrebujem na vytvorenie dotazu v SQL získať nejaké faktúry v závislosti od aktuálneho dátumu. Ja som na stáži v spoločnosti, tak som len potrebu vytvoriť logiky, nie nevyhnutne dotaz. Môže niekto pomôcť, aby som preložiť tento podmienok do SQL (snehová Vločka)?

  • Ak Aktuálny Dátum (dnešný dátum) je medzi deň 14 a 27 mesiac >>> Získať faktúry od 14. dňa aktuálneho mesiaca
  • Ak Aktuálny Dátum (dnešný dátum) je medzi dňa 28 a 31, mesiac >>> Získať faktúry zo dňa 28 aktuálneho mesiaca
  • Ak Aktuálny Dátum (dnešný dátum) je medzi deň 1 a 13 mesiac >>> Získať faktúry zo dňa 28 posledný mesiac

Vďaka vopred!

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

Najlepšiu odpoveď

2

Myslím, že vaše najjednoduchší, najjasnejší možnosť je v prípade ziskov a strát. Môžete to dať do svojho vybrať a pracovať s ním tam, alebo ho priamo do ak klauzula. čo je vhodnejšie pre váš dotaz.

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

Revidovaný riešenie.

Odstránenie nerovností a zníženie problém dole na násobky 14 s mesiaci úpravy namiesto viacerých prípade závierka (drahé, beh v mierke).

enter image description here

2021-12-09 11:27:46

toto by mohlo fungovať, ale kód je dosť zložito sa mi. Je to veľmi ťažké pre mňa sa na to pozerať a rozumieť/predpovedať, akú hodnotu bude vrátený na daný dátum. Ja tiež nevidím dôvod, prečo by bežať rýchlejšie, pretože je potrebné vytvárať a porovnať všetky dátumy, skôr než len jeden.
David Garrison

Tiež si myslím, že potrebujete váš filter pred spustením GREATEST. Nemôžem si, aby to fungovalo správne pre niektoré termíny.
David Garrison

Beží rýchlejšie, ako nie je tam žiadny prípade vyhlásenia alebo nerovnosti predikáty. Boli ste správne mojej predchádzajúcej odpovedi nebolo testované dokonale - ospravedlňujem sa.
Adrian White

V iných jazykoch

Táto stránka je v iných jazykoch

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