Je dois vérifier un champ de date pour déterminer s'il est dans l'exercice financier actuel par ex. 2019, ou au prochain exercice précédent, par exemple. 2020, selon si le mois est entre janvier et juillet. Si le mois est 7, l'année suivante doit être attribuée.
Utilisation d'une table de mise en scène, le SQL que j'ai essayé est le suivant: p> J'ai également essayé d'utiliser un code simple suivant pour déterminer mon erreur, mais je ne pouvais tout simplement pas pu déterminez pourquoi je reçois l'erreur. p> SELECT CASE
WHEN MONTH (GETDATE()) <= 7
THEN YEAR (GETDATE())
ELSE DATEPART(YYYY,DATEADD(YY, 1, GETDATE()))
3 Réponses :
Vous manquez de manquer le ou p> fin code> pour
case code>
Pourquoi merci. Je l'ai continué et je me demandais pourquoi cela ne fonctionnait pas. Je viens d'ajouter de la fin et cela fonctionnait parfaitement. Deux têtes ou plus sont meilleures qu'une. Merci un mil.
N'oubliez pas que la réponse avec la tique verte est de résoudre votre problème.
Votre déclaration de cas nécessite un mot-clé «fin». Mais aussi ...
ou, si votre version prend en charge ou, Comme @ezlo souligne dans les commentaires, vous pouvez créer une table de calendrier: p> Cette approche est plus difficile à configurer, mais elle bénéficie d'être plus efficace, évitant Déclarations de cas lors de la rédaction de code et vous permettant de conserver autant de propriétés liées à la date supplémentaires qui vous bénéficieraient probablement dans d'autres requêtes. p> p> année (date) code> sortira un entier. Alors considérez: p>
iif code>: p>
Merci à tous pour leurs réponses. Bien apprécié.
Ajouter à Année (getDate ()) CODE> 0 ou 1 Selon le mois:
SELECT * FROM StagingTable
WHERE StagingTable.FY = YEAR(GETDATE()) +
CASE WHEN MONTH(GETDATE()) <= 7
THEN 0
ELSE 1
END
Quelle erreur vous avez?
Ajouter
fin code> à la fin du texte de votre requête.
Utilisez une table de calendrier pour vérifier les propriétés d'une date. Il faut un certain temps pour générer la table, mais vous économiserez beaucoup de temps à long terme.