Как выбрать максимальную дату для функции года - PullRequest
0 голосов
/ 01 ноября 2019

enter image description here

Я пытаюсь выбрать максимальную дату за год, но она не работает. Есть идеи, что делать?

SELECT a.tkinit [TK ID],
   YEAR(a.tkeffdate) [Rate Year],
   max(a.tkeffdate) [Max Date],
   tkrt03 [Standard Rate]

FROM stageElite.dbo.timerate a
join stageElite.dbo.timekeep b ON b.tkinit = a.tkinit 

WHERE a.tkinit = '02672'
and tkeffdate BETWEEN '2014-01-01' and '12-31-2014'


GROUP BY a.tkinit,
 tkrt03,
 a.tkeffdate

Ответы [ 2 ]

0 голосов
/ 01 ноября 2019

Кажется, вы хотите только одну строку и все столбцы. Используйте ORDER BY и TOP:

SELECT TOP (1) tr.tkinit as [TK ID],
       YEAR(tr.tkeffdate) as [Rate Year],
       a.tkeffdate as [Max Date],
       tkrt03 as [Standard Rate]
FROM stageElite.dbo.timerate tr JOIN
     stageElite.dbo.timekeep tk
     ON tk.tkinit = tr.tkinit 
WHERE tr.tkinit = '02672' AND
      tr.tkeffdate >= '2014-01-01' AND
      tr.tkeffdate < '2015-01-01'
ORDER tr.tkeffdate DESC;

Обратите внимание, что я также исправил ваши сравнения дат и псевдонимов таблиц.

0 голосов
/ 01 ноября 2019

Возможно, вы хотите только по годам, а не по календарной дате. Для SQL-сервера вы можете попробовать это.

SELECT
   …
   MaxDate = MAX(a.tkeffdate) OVER (PARTITION BY  a.tkinit, YEAR(a.tkeffdate)))
   …

Или вы можете изменить запрос выше, чтобы сгруппировать по году вместо даты ->

GROUP BY a.tkinit,
 tkrt03,
 YEAR(a.tkeffdate)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...