powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Нужно к каждому отказу (cтатус D) вывести время по последнему до него статусу
3 сообщений из 3, страница 1 из 1
Нужно к каждому отказу (cтатус D) вывести время по последнему до него статусу
    #39960293
Luna17
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте есть таблица с юзерами и их статусами платежей:

User Time Status
1 7:00 A
1 7:28 D
1 8:01 D
1 9:50 A
1 10:00 D
1 11:00 A
2 8:09 A
2 9:55 A
2 10:30 D
2 11:10 A

Нужно к каждому отказу (cтатус D) вывести время по последнему до него статусу А.
Чтобы получилось так:

User Time_D Time_A
1 7:28 7:00
1 8:01 7:00
1 10:00 9:50
2 10:30 9:55

Подскажите, что можно использовать?

Заранее спасибо за любые подсказки!
...
Рейтинг: 0 / 0
Нужно к каждому отказу (cтатус D) вывести время по последнему до него статусу
    #39960300
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.
--таблица с юзерами и их статусами платежей
WITH CTE(USERR,TIMES,STATUSS)AS
(
  SELECT 1, '07:00:00','A'
    UNION ALL
  SELECT 1,'07:28:00','D'
   UNION ALL
  SELECT 1,'08:01:00','D'
   UNION ALL
  SELECT 1,'09:50:00','A'
   UNION ALL
  SELECT 1,'10:00:00','D'
   UNION ALL
  SELECT 1,'11:00:00','A'
   UNION ALL
  SELECT 2,'08:09:00','A'
   UNION ALL
  SELECT 2,'09:55:00','A'  
   UNION ALL
  SELECT 2,'10:30:00','D'
   UNION ALL
  SELECT 2,'11:10:00','A'         
)
--Нужно к каждому отказу (cтатус D) вывести время по последнему до него статусу А.
SELECT C.USERR,C.TIMES,C.STATUSS,X.TIMES,X.STATUSS
FROM CTE AS C
CROSS APPLY
(
  SELECT TOP 1 A.USERR,A.STATUSS,A.TIMES
  FROM CTE AS A
   WHERE A.USERR=C.USERR AND A.STATUSS='A' AND A.TIMES<C.TIMES
   ORDER BY A.TIMES DESC
)X
WHERE C.STATUSS='D'
...
Рейтинг: 0 / 0
Нужно к каждому отказу (cтатус D) вывести время по последнему до него статусу
    #39960443
Luna17
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
londinium,
СПАСИБО Вам огромное!
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Нужно к каждому отказу (cтатус D) вывести время по последнему до него статусу
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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