Come creare una query per ottenere le fatture tra date (aiuto)

0

Domanda

Ho bisogno di creare una query in SQL per ottenere alcune fatture in base alla data corrente. Io sono un tirocinante in azienda, così ho solo bisogno di creare la logica, non necessariamente la query. Qualcuno mi può aiutare a tradurre questo in condizioni di SQL (Fiocco di neve)?

  • Se la Data Corrente (data odierna) è tra il giorno 14 e il 27 del mese >>> Get fatture da giorno 14 del mese corrente
  • Se la Data Corrente (data odierna) è tra il giorno 28 e 31 del mese >>> Get fatture da giorno 28 del mese corrente
  • Se la Data Corrente (data odierna) è tra il giorno 1 e il 13 del mese >>> Ottenere fatture dal giorno 28 del mese scorso

Grazie in anticipo!

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

Migliore risposta

2

Credo che il tuo più semplice, più chiara opzione è un caso economico. Si può mettere questo nel vostro selezionare e lavorare da lì, o metterlo direttamente in una clausola where. qualunque sia il più appropriato per la vostra query.

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

Rivisto soluzione.

Rimuovere le disuguaglianze e riducendo il problema a multipli di 14, con il mese di regolazioni, invece di più istruzioni case (costoso per eseguire, in scala).

enter image description here

2021-12-09 11:27:46

questo potrebbe funzionare, ma il codice è abbastanza criptico per me. E ' molto difficile per me guardare questo e capire/predire il valore restituito per una determinata data. Anche io non riesco a capire il motivo per cui sarebbe più veloce, dato che ha bisogno di generare e confrontare tutte le date anziché uno solo.
David Garrison

Inoltre, penso che hai bisogno di un filtro prima dell'esecuzione del GREATEST. Io non riesco a farlo funzionare correttamente per alcune date.
David Garrison

Corre veloce come non c'è nessun caso di dichiarazioni o di predicati di disuguaglianza. Si erano correggere la mia precedente risposta non si è testato e perfettamente scuse.
Adrian White

In altre lingue

Questa pagina è in altre lingue

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