SQLRU.net
Разработка приложений баз данных

Начало » Использование СУБД » Microsoft SQL Server » Sql запрос (помогите пожалуйста с запросом)
Sql запрос [сообщение #4910] Wed, 17 April 2024 10:09 Переход к следующему сообщению
keshahot в настоящее время не в онлайне  keshahot
Сообщений: 3
Зарегистрирован: April 2024
Junior Member
Есть таблица LastSignalHistory
SELECT [CustomerID]
     ,[MTUreceiver]
     ,[MTUsystem]
     ,[MTUaddress]
     ,[Arrival]
     ,[Reading]
     ,[PrevArrival]
     ,[PrevReading]
     ,[ts]
     ,[trueReading]
     ,[UtlFlg]
В таблице есть информация за 7 лет. Информация за каждый день для каждого CustomerID .
надо сделать выборку последней информации  за каждый год для каждого CustomerID.
Заранее спасибо

[Обновления: Wed, 17 April 2024 10:09]

Известить модератора

Re: Sql запрос [сообщение #4911 является ответом на сообщение #4910] Wed, 17 April 2024 10:33 Переход к предыдущему сообщениюПереход к следующему сообщению
BlackEric в настоящее время не в онлайне  BlackEric
Сообщений: 366
Зарегистрирован: June 2022
Senior Member
Select MAx(date), CustomerID from ttt
Group BY CustomerID
Heaving Date > 'yyyy' and Date < 'yyyy+1'

И так за каждый год
Re: Sql запрос [сообщение #4912 является ответом на сообщение #4911] Wed, 17 April 2024 10:38 Переход к предыдущему сообщениюПереход к следующему сообщению
keshahot в настоящее время не в онлайне  keshahot
Сообщений: 3
Зарегистрирован: April 2024
Junior Member
а можно ли это сделать одним запросом . Спасибо
Re: Sql запрос [сообщение #4913 является ответом на сообщение #4912] Wed, 17 April 2024 11:07 Переход к предыдущему сообщениюПереход к следующему сообщению
BlackEric в настоящее время не в онлайне  BlackEric
Сообщений: 366
Зарегистрирован: June 2022
Senior Member
Можно. Я бы через union попробовал
Ну или в подзапросе получить года и по ним группировать
Re: Sql запрос [сообщение #4914 является ответом на сообщение #4913] Wed, 17 April 2024 12:08 Переход к предыдущему сообщению
keshahot в настоящее время не в онлайне  keshahot
Сообщений: 3
Зарегистрирован: April 2024
Junior Member
Спасибо за ответ . Сделал такой скрипт . Работает

SELECT [Year], [CustomerID], [Arrival], [Reading]
FROM (
   SELECT
       YEAR(Arrival) AS [Year],
       [CustomerID],
       MAX(Arrival) OVER (PARTITION BY YEAR(Arrival), [CustomerID]) AS [Arrival],
       MAX(Reading) OVER (PARTITION BY YEAR(Arrival), [CustomerID]) AS [Reading],
       ROW_NUMBER() OVER (PARTITION BY YEAR(Arrival), [CustomerID] ORDER BY Arrival DESC) AS RowNum
   FROM [MCM_Archive].[dbo].[LastSignalHistory]
   WHERE YEAR(Arrival) BETWEEN 2012 AND 2020
) AS Subquery
WHERE RowNum = 1
ORDER BY [CustomerID], [Year];
Предыдущая тема: AlwaysOn и планы обслуживания
Следующая тема: Есть ли у вас идеи как лучше написать запрос, который будет меньше данных считывать?
Переход к форуму:
  


Текущее время: Tue Dec 03 20:39:07 GMT+3 2024

Общее время, затраченное на создание страницы: 0.01076 секунд