Jak vytvořit dotaz, aby se faktury mezi daty (potřebné pomoci)

0

Otázka

Potřebuji vytvořit dotaz v SQL získat nějaké faktury v závislosti na aktuální datum. Jsem stážistka ve společnosti, takže potřebuji jen vytvořit logiku, ne nutně dotazu. Může mi někdo pomoct přeložit to podmínky do SQL (sněhová Vločka)?

  • Pokud je Aktuální Datum (dnešní datum) je den mezi 14. a 27. v měsíci >>> faktury od 14. dne aktuálního měsíce
  • Pokud je Aktuální Datum (dnešní datum) je mezi dnem 28. a 31. v měsíci >>> faktury ze dne 28 aktuální měsíc
  • Pokud je Aktuální Datum (dnešní datum) je mezi 1. a 13 měsíc >>> faktury ze dne 28 minulý měsíc

Díky předem!

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

Nejlepší odpověď

2

Myslím, že váš nejjednodušší, nejjasnější možností je případ prohlášení. Si můžete dát to na vaše vybrat a pracovat s ním, nebo ho dát přímo do klauzule where. co je vhodnější pro 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é řešení.

Odstraňování nerovností a snižování problém dolů na násobky 14 s měsíc úpravy namísto několika případových prohlášení (drahé spustit v měřítku).

enter image description here

2021-12-09 11:27:46

to by mohlo fungovat, ale kód je docela záhadné pro mě. Je to pro mě velmi těžké se na to podívat a pochopit/předpovědět, co hodnota bude vrátil se pro dané datum. Já také nevidím důvod, proč by to běžet rychleji, protože to potřebuje generovat a porovnávat všechny data, spíše než jen jeden.
David Garrison

Také, myslím, že potřebujete filtr před spuštěním GREATEST. Nemůžu se dostat, aby to fungovalo správně pro některé termíny.
David Garrison

Běží rychleji, jak tam je žádný případ prohlášení nebo nerovnost predikáty. Jsi, jaká moje předchozí odpověď nebyla testována dokonale - omlouvám se.
Adrian White

V jiných jazycích

Tato stránka je v jiných jazycích

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