Как получить уникальное значение Year (с помощью Group By) из таблицы с несколькими значениями даты, используя SQL-запрос в Access - PullRequest
0 голосов
/ 13 июня 2019

У меня есть таблица с праздниками (приведена ниже).Как можно получить уникальные значения, такие как 2018,2019,2020 с помощью SQL-запроса.

Date-Holiday    Memo
1/1/2018    New Year's Day
1/2/2018    Bank Holiday
1/3/2018    Bank Holiday
1/1/2019    New Year's Day
1/2/2019    Bank Holiday
1/3/2019    Bank Holiday
12/31/2019  Bank Holiday
1/1/2020    New Year's Day
1/2/2020    Bank Holiday
1/3/2020    Bank Holiday

Пытался

SELECT Year([00_Holiday].[Date-Holiday]) AS ["HYear"] FROM 00_Holiday;

Возвращается несколько значений.

Пытался с использованием

SELECT Year([00_Holiday].[Date-Holiday]) AS ["HYear"] FROM 00_Holiday
group by [00_Holiday].[Date-Holiday];

, но тот же результат ..

Ответы [ 3 ]

2 голосов
/ 13 июня 2019

Используйте Отличительный и правильный синтаксис:

"SELECT DISTINCT Year([Date-Holiday]) AS [HYear] FROM [00_Holiday];" 
0 голосов
/ 13 июня 2019

Следующий запрос должен делать то, что вы хотите:

CREATE TABLE #temp (DateHoliday DATE, Memo VARCHAR(MAX))

INSERT INTO #temp VALUES 
('1/1/2018','a'),
('1/2/2018','b'),
('1/3/2018','c'),
('1/2/2019','d'),
('1/3/2019','e')

-- Method 1:-

SELECT DISTINCT YEAR(DateHoliday) AS [Year] 
FROM #temp

-- Method 2

SELECT [Year] 
FROM #temp
CROSS APPLY (VALUES(YEAR(DateHoliday))) AS Y([Year])
GROUP BY [Year]

Результат, как показано ниже,

Year
2018
2019
0 голосов
/ 13 июня 2019

Попробуйте это:

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
...