0
votes

Comment puis-je réparer cette déclaration de cas pour vérifier l'année actuelle et future sans obtenir une erreur?

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> xxx pré>

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 commentaires

Quelle erreur vous avez?


Ajouter fin à 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.


3 Réponses :


1
votes

Vous manquez de manquer le fin pour case xxx

ou xxx


2 commentaires

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.



0
votes

Votre déclaration de cas nécessite un mot-clé «fin». Mais aussi ...

année (date) sortira un entier. Alors considérez: xxx

ou, si votre version prend en charge iif : xxx

ou, Comme @ezlo souligne dans les commentaires, vous pouvez créer une table de calendrier: xxx

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.


1 commentaires

Merci à tous pour leurs réponses. Bien apprécié.



0
votes

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


0 commentaires