powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / помогите, плиз, с запросом
3 сообщений из 3, страница 1 из 1
помогите, плиз, с запросом
    #40037141
Vladlmlr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте,

подскажите плиз, есть ли возможность обратится повторно с exists к одной и той же таблице

declare @T table (id int, tm smalldatetime, st int)

insert @T values(1, '01.01.2019', 100)
insert @T values(1, '01.01.2020', 2)
insert @T values(1, '01.01.2021', 30)

insert @T values(2, '01.01.2020', 54)
insert @T values(2, '01.01.2021', 12)
insert @T values(2, '01.01.2022', 4)

insert @T values(3, '01.01.2022', 8)

/*
суть не просто обратится к Т, сдесь для примера, т.к. получение А довольно сложный запрос и нужно к нему потом еще добавить недостающие данные 2, '01.01.2022' фактически полем или строкой без разницы
select A.*, B.*
from
(select * from @T where tm < '01.01.2022') as A
left join @T B on B.id=A.id and not exists(select 1 from A where B.id=A.id and B.tm=A.tm)
order by A.id, A.tm, B.tm
*/

--типа такого, через временную таблицу
declare @T2 table (id int, tm smalldatetime, st int)

insert @T2 select * from @T where tm < '01.01.2022'

select * from @T2

select * from @T2
union all
select T1.id, T1.tm, null from @T T1 where exists(select 1 from @t2 T2 where T2.id=T1.id) and not exists(select 1 from @t2 T2 where T2.id=T1.id and T2.tm=T1.tm)
order by 1, 2
...
Рейтинг: 0 / 0
помогите, плиз, с запросом
    #40037208
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
with t2 as (select * from @T where tm < '01.01.2022' )
   select * from t2
   union all
   select T1.id, T1.tm, null from @T T1 where exists(select 1 from t2 where T2.id=T1.id) and not exists(select 1 from t2 where T2.id=T1.id and T2.tm=T1.tm)
   order by 1, 2 
...
Рейтинг: 0 / 0
помогите, плиз, с запросом
    #40037242
Vladlmlr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Прикольно. Спасибо.

Гляну насколько быстрее чем через временную таблицу будет, т.к. объем большой.

ЗЫ. Порадовало обязательное требование точки с запятой )
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / помогите, плиз, с запросом
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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