J'ai une table avec des vacances (données ci-dessous). Comment obtenir les valeurs uniques telles que 2018 2019.2020 à l'aide d'une requête SQL. essayé p> Il renvoie plusieurs valeurs. p> Essayé en utilisant P> SELECT Year([00_Holiday].[Date-Holiday]) AS ["HYear"] FROM 00_Holiday
group by [00_Holiday].[Date-Holiday];
3 Réponses :
Essayez ceci:
Declare @t table (Holiday varchar(50),memo varchar(50)) insert into @t values ('1/1/2018','New Years Day') insert into @t values ('1/1/2018','Bank Holiday') insert into @t values ('1/1/2019','New Years Day') select t.Holiday,t.memo from ( select ROW_NUMBER() over (partition by right(holiday,4) order by memo ) rn,holiday,memo from @t ) t where rn=1
La requête suivante doit faire ce que vous voulez:
Year 2018 2019
Méthode 1 utilise distinct, mais il présente des inconvénients qu'il peut augmenter la charge sur la méthode du moteur de requête 2 utilise un groupe par lequel est plus fiable.
Utilisez distinct em> et la syntaxe correcte:
Ne fait pas de sens, mais a reçu la sortie requise à l'aide d'une année de sélection ([00_holiday]. [Date-Holiday]) comme ["Hyear"] de 00_holiday Group d'ici (année ([00_holiday]. [Date-date-holiday])); Est-ce que cette requête est réalisable?
Voilà comment le groupe par fonctionne. Si vous lisez la colonne dans la clause du groupe par clause, vous demandez essentiellement que des enregistrements en double soient exclus de l'ensemble de résultats. Cela donne le même effet que Select distinct, qui élimine également les lignes en double du jeu de résultats.