0
votes

SQL Server Daaddd () à l'aide du nom de colonne Année et non de mots-clés 'Année'

J'utilise daaddd (année, -3, getDate ()) pour tirer les dernières années de données sur une période de roulement.

J'ai aussi une colonne appelée année, la vue que je crée utilise la myTable.Year et non l'année du mot clé SQL.

E.g Daaddd (myTable.year, -3, getDate ())

Il le résout à chaque fois dans la vue qui est vraiment ennuyeux. Je suis un peu rouillé, je suis sorti de cela pendant environ 4 ans.

Comment puis-je vous assurer qu'il utilise l'année "année" du mot clé, je le trouve étrange que cela fait cela. Toute explication à ce sujet serait également utile. SQL Server 2016

Merci gars.

 Entrez la description de l'image ici

 Entrez la description de l'image ici Edit: J'ai édité ma notation de schéma mal placée et j'ai identifié le nom de la table, désolé pour la confusion


22 commentaires

Quelles autres valeurs peuvent être dans cette colonne de la table de l'année?


Ce n'est qu'une valeur de chaîne représentant l'année '2019' et ainsi de suite. La table est une liste des feuilles de temps. Année est un champ dans ladite table


Pouvez-vous nous montrer la requête que vous avez maintenant et la structure de cette année de table?


Je ne sais pas ce que vous êtes réellement après ici. Le premier paramètre de daadd ne peut pas être un nom de colonne, il doit être l'une des périodes de périodes définies ICI . Les échantillons de données et des résultats attendus seront vraiment utiles.


Oui je comprends. Je sais que j'ai besoin d'utiliser où table.dbo.date> daadd (année, -3, getDate ())


Donc, vous voulez quelque chose comme daadd ('2019', -3, getdate ()) ? Cela ne fonctionnera pas, vous devez transmettre un dayspart comme une année ou un mois, ou jour ou ...


table.dbo.date n'a aucun sens. DBO est un schéma, de sorte qu'il va avant le nom de la table. En utilisant le nom du schéma lorsque vous référencez une colonne dans une requête est désexcitée cependant. Sauf si date est le nom d'une table , ce qui implique que vous avez une base de données appelée table ???


La table appelée feuilles de temps, a un domaine appelé année. La vue modifie automatiquement l'année de la "année" SQL, utilisée à la date Ajouter une fonction, pour être le champ TimerS.Year, j'essaie de forcer le mot-clé dans la fonction mais la vue est stupide. Est-ce un bogue ou un problème de configuration


pourquoi ne vous montrez pas la vue et la structure de la table, peut-être que nous ferions mieux de comprendre ce que vous voulez dire


"Mais la vue est stupide" Je ne pense pas que ce soit, d'être honnête. Ce que tu dis n'a de sens. Vous voulez faire daadd (table.dbo.year, -3, getdate (getdate ())) Mais on dirait que vous essayez d'utiliser la table date dans le Base de données Table en tant que 1er argument pour daadd . L'utilisation d'une table pour le remplacement d'une valeur de période définie n'a aucun sens. Les valeurs de la première dispute sont clairement définies et vous ne pouvez certainement pas passer un objet de table pour cela.


Je comprends comment fonctionne la fonction, je n'ai aucune aide avec mon schéma de schéma. Je sais que j'ai besoin d'utiliser l'année "année", ma requête est 'Où Timeeshets.date> daadd (année, -3, getDate ())' mais quand j'ajoute le mot-clé "Année" dans la fonction Daadd tout en créant la vue , il semble la résoudre immédiatement à utiliser les feuilles de temps de temps. Fielyear à l'intérieur de la fonction, qui n'est pas autorisé, je comprends


pourquoi ne vous montrez pas la vue et la structure de la table, peut-être que nous ferions mieux de comprendre ce que vous voulez dire


C'est certainement rien à voir avec du moteur de recherche, ou comment la requête - Demo db <> Fiddle < / a>. Ce que vous décrivez des sons comme quelque chose qui se passe avec Intellisense dans votre IDE. Quel est l'EDI utilisez-vous?


Si votre éditeur a des problèmes avec le mot-clé année alors essayez Sélectionnez DateAdd (yy, -3, getDate ()) au lieu de Sélectionnez DateAdd (année, -3 , getDate ())


Merci oui, vous obtenez ce que je veux dire, je n'aide personne avec ma pauvre explication. Je cherche un moyen de «année» mais que vous utilisez YY. Merci. J'utilise SSMS 2016, je pensais peut-être que la question de l'IDE Je voulais le faire arrondir.


Utiliser «YY» à la place de la "année" fixe le problème pour moi. Doit être une question IDE à ma fin, si ennuyeux


Ok content que nous ayons eu ce tri. La prochaine fois que vous poserez une question, donnez autant d'informations que possible qui aideront à obtenir des réponses plus faciles


Vous pouvez toujours répondre à votre propre question, expliquer pourquoi vous avez ceci et ce qui le corrige. Cela pourrait aider les futurs utilisateurs de manière à ce que le même problème


@Guido, vous avez répondu en premier. S'il vous plaît ajoutez-le et vous obtenez les drots


Ok je viens de poster une réponse


Plutôt que des images, incluez le code. Ces images sont beaucoup trop petites pour que je puisse lire le SQL.


Ils sont clairs à ma fin, ils ont été réduits de résolution lorsque j'ai intégré les images - désolé


3 Réponses :


1
votes

Vous pouvez mettre votre table dans une colonne de sous-requête et d'alias [année]. Quelque chose comme xxx

(ou utilisez CTE)

puis une année signifierait que le mot clé.


0 commentaires

2
votes

Je ne sais pas si je comprends bien correctement, mais que vous souhaitez appliquer le mot clé, vous souhaitez donc soustraire 3 ans à compter de la date actuelle, correct? Cela devrait fonctionner: xxx

ou xxx

(sauf si vous avez des colonnes nommées YY et AAAA; -))

Sinon, pardonnez mon malentendu ...


1 commentaires

C'était la solution, merci. Une idée de la raison pour laquelle cela se comporterait de cette manière?



1
votes

Il semble que votre éditeur ait des problèmes avec le mot-clé an et le remplace par une valeur d'une colonne également appelée année

Ceci peut être résolu en utilisant Un synonyme de la fonction de mots-clés dans la fonction Daadd.
Donc au lieu de xxx

utiliser xxx


0 commentaires