powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Не получается написать запрос
4 сообщений из 4, страница 1 из 1
Не получается написать запрос
    #39842741
Peretcz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток!
Имеется проблема (собственно поэтому я тут):
Пример:
ID Событие Дата
1 Какое-то событие 22.05.2019
1 Какое-то событие 22.05.2019
1 Нужное событие 23.05.2019
1 Последние событие 25.05.2019
2 Какое-то событие 02.12.2017
2 Нужное событие 04.12.2017
2 Последние событие 06.12.2017
3 Какое-то событие 10.09.2018
3 Какое-то событие 10.09.2018
3 Какое-то событие 13.09.2018
3 Нужное событие 15.09.2018
3 Последние событие 17.09.2018

Собственно не могу понять, как мне вытащить все строки с предпоследним событием каждого айдишники, по одному определенному получается, а массово не могу допереть. Просьба помочь.
...
Рейтинг: 0 / 0
Не получается написать запрос
    #39842745
SERG1257
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
https://docs.microsoft.com/en-us/sql/t-sql/functions/row-number-transact-sql?view=sql-server-2017

select * from
(
SELECT
ROW_NUMBER() OVER(PARTITION BY id ORDER BY Дата DESC) AS RowNum,
ID, Событие, Дата
FROM yourTable
) as t
where RowNum=2
...
Рейтинг: 0 / 0
Не получается написать запрос
    #39842747
londinium
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
USE master
GO
WITH CTE(ID,EVENTT,EVENTDATE)
AS
(
  SELECT 1,'Какое-то событие','20190522'
    UNION ALL
  SELECT 1,'Какое-то событие','20190522'  
    UNION ALL
  SELECT 1,'Нужное событие','20190523'
    UNION ALL
  SELECT 1,'Последние событие','20190525' 
    UNION ALL
  SELECT 2,'Какое-то событие','20171202'
    UNION ALL
  SELECT 2,'Нужное событие','20171204'
   UNION ALL
  SELECT 2,'Последние событие','20171206'
   UNION ALL
  SELECT 3,'Какое-то событие','20180910'
   UNION ALL
  SELECT 3,'Какое-то событие','20180910'
   UNION ALL
  SELECT 3,'Какое-то событие','20180910'  
   UNION ALL
  SELECT 3,'Нужное событие','20180915'
   UNION ALL
  SELECT 3,'Последние событие','20180917'       
),
ORDERED AS
(
 SELECT C.ID,C.EVENTT,C.EVENTDATE,
  ROW_NUMBER()OVER(PARTITION BY C.ID ORDER BY C.EVENTDATE DESC)AS XCOL
 FROM CTE AS C
)
SELECT R.ID,R.EVENTT,R.EVENTDATE
FROM ORDERED AS R
WHERE R.XCOL=2;
...
Рейтинг: 0 / 0
Не получается написать запрос
    #39843136
Peretcz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SERG1257, спасибо! С Row_number не был знаком, теперь буду знать.
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Не получается написать запрос
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]