Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Не получается написать запрос / 4 сообщений из 4, страница 1 из 1
29.07.2019, 21:35
    #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
29.07.2019, 21:57
    #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
29.07.2019, 22:00
    #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
30.07.2019, 19:04
    #39843136
Peretcz
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не получается написать запрос
SERG1257, спасибо! С Row_number не был знаком, теперь буду знать.
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Не получается написать запрос / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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