Comment créer une requête pour obtenir les factures entre les dates (besoin d'aide)

0

La question

J'ai besoin de créer une requête SQL pour obtenir des factures en fonction de la date actuelle. Je suis un stagiaire dans l'entreprise, donc j'ai seulement besoin de créer la logique, pas nécessairement de la requête. Quelqu'un peut-il m'aider à traduire ce conditions dans SQL (Flocon de neige)?

  • Si la Date du jour (date d'aujourd'hui) est entre le jour 14 et le 27 du mois >>> Obtenir les factures de la journée 14 du mois en cours
  • Si la Date du jour (date d'aujourd'hui) est entre le jour le 28 et le 31 du mois >>> Obtenir les factures de 28 jours du mois en cours
  • Si la Date du jour (date d'aujourd'hui) est entre le jour 1 et le 13 du mois >>> Obtenir les factures de jour 28 du mois dernier

Merci à l'avance!

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

La meilleure réponse

2

Je pense que votre plus simple, plus clair, l'option est une instruction case. Vous pouvez mettre ceci dans votre sélectionner et travailler avec elle à partir de là, ou de le mettre directement dans une clause where. ce qui est le plus approprié pour votre requête.

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

Solution révisée.

Suppression des inégalités et de réduire le problème à un multiple de 14 mois avec des ajustements au lieu de plusieurs cas consolidés (cher à exécuter à l'échelle).

enter image description here

2021-12-09 11:27:46

cela peut fonctionner, mais le code est assez énigmatique pour moi. C'est très dur pour moi de regarder cette et de comprendre et de prédire ce que la valeur va être renvoyé à une date donnée. Je ne peux pas voir pourquoi il irait plus vite depuis qu'il a besoin de générer et de comparer toutes les dates, plutôt qu'un seul.
David Garrison

Aussi, je pense que vous avez besoin de votre filtre avant l'exécution de la GREATEST. Je ne peux pas obtenir que cela fonctionne correctement pour certaines dates.
David Garrison

Court plus vite qu'il n'y a pas de cas de déclarations ou de l'inégalité des prédicats. Vous avez été correct de ma réponse précédente n'était pas testé parfaitement excuses.
Adrian White

Dans d'autres langues

Cette page est dans d'autres langues

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