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

Возможно ли такое сделать?

Есть таблица Tab1 с тремя полями-

Pole1 Pole2 Pole3Znach10K1SZnach20K2SZnach30K1SZnach40K2SZnach51K2SZnach60K2SZnach70K1SZnach80K2S

Нужно показать Pole1, если Pole2='1K' и показать все поля-предшественники до первого по отношению к записи с '1K' - Pole3='1S', включая само это поле и не включая поле, которое тоже с '1S', но последнее после выбранного '1K' .

т.е. должно получить вот это:
where Pole2='1K'

Pole1 Pole2 Pole3Znach30K1SZnach40K2SZnach51K2SZnach60K2S
...
Рейтинг: 0 / 0
Выборка данных по нестандартным условиям
    #38650209
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LisSpпоказать все поля-предшественники
И что задает порядок "предшествования" ?
...
Рейтинг: 0 / 0
Выборка данных по нестандартным условиям
    #38650215
LisSp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
GloryLisSpпоказать все поля-предшественники
И что задает порядок "предшествования" ?

получается ничего...
нужен алгоритм, который бы искал предыдущие по порядку поля до первого поля с "1S", включал его и искал поля после выбранного значения до следующего поля с "1S" и уже не включал его и всё что после него. Можно ли такой алгоритм написать на t-cql?
...
Рейтинг: 0 / 0
Выборка данных по нестандартным условиям
    #38650223
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LisSpнужен алгоритм, который бы искал предыдущие по порядку поля до первого поля с "1S"
Если нет задающего порядок поля, то как можно искать что-то последующее или предыдущее ?
...
Рейтинг: 0 / 0
Выборка данных по нестандартным условиям
    #38650227
iap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LisSpGloryпропущено...

И что задает порядок "предшествования" ?

получается ничего...
нужен алгоритм, который бы искал предыдущие по порядку поля до первого поля с "1S", включал его и искал поля после выбранного значения до следующего поля с "1S" и уже не включал его и всё что после него. Можно ли такой алгоритм написать на t-cql?Если я записи на первом рисунке расставлю в другом порядке,
то как Вы докажете, что Ваш порядок - правильный?
...
Рейтинг: 0 / 0
Выборка данных по нестандартным условиям
    #38650252
LisSp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
iapLisSpпропущено...


получается ничего...
нужен алгоритм, который бы искал предыдущие по порядку поля до первого поля с "1S", включал его и искал поля после выбранного значения до следующего поля с "1S" и уже не включал его и всё что после него. Можно ли такой алгоритм написать на t-cql?Если я записи на первом рисунке расставлю в другом порядке,
то как Вы докажете, что Ваш порядок - правильный?

представим, что этот порядок-это постоянное и не изменяемое
...
Рейтинг: 0 / 0
Выборка данных по нестандартным условиям
    #38650254
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LisSpпредставим, что этот порядок-это постоянное и не изменяемое
Т.е. в тексте запроса так и написать сереру - "представь, что этот порядок постоянный и неизменяемый" ?
Может тогда просто ему написать - "слышь, сделай все правильно" ?
...
Рейтинг: 0 / 0
Выборка данных по нестандартным условиям
    #38650256
LisSp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
GloryLisSpнужен алгоритм, который бы искал предыдущие по порядку поля до первого поля с "1S"
Если нет задающего порядок поля, то как можно искать что-то последующее или предыдущее ?

может методом перебора значений? Перебирая каждое значение Pole3 до поиска нужных. Это невозможно в SQL?
...
Рейтинг: 0 / 0
Выборка данных по нестандартным условиям
    #38650259
LisSp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
GloryLisSpпредставим, что этот порядок-это постоянное и не изменяемое
Т.е. в тексте запроса так и написать сереру - "представь, что этот порядок постоянный и неизменяемый" ?
Может тогда просто ему написать - "слышь, сделай все правильно" ?

это же не просто рандомный порядок. Есть готовый запрос, который выводит именно такой порядок.
...
Рейтинг: 0 / 0
Выборка данных по нестандартным условиям
    #38650261
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LisSpможет методом перебора значений? Перебирая каждое значение Pole3 до поиска нужных. Это невозможно в SQL?
Еще раз
Вот сделает сервер select из вашей таблицы.
Как он добьется "этот порядок постоянный и неизменяемый", если один порядок не отличим от другого ?
...
Рейтинг: 0 / 0
Выборка данных по нестандартным условиям
    #38650268
LisSp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
GloryLisSpможет методом перебора значений? Перебирая каждое значение Pole3 до поиска нужных. Это невозможно в SQL?
Еще раз
Вот сделает сервер select из вашей таблицы.
Как он добьется "этот порядок постоянный и неизменяемый", если один порядок не отличим от другого ?

порядок устанавливается по Pole1
...
Рейтинг: 0 / 0
Выборка данных по нестандартным условиям
    #38650273
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LisSpпорядок устанавливается по Pole1
Наконец то
...
Рейтинг: 0 / 0
Выборка данных по нестандартным условиям
    #38650276
LisSp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
GloryLisSpпорядок устанавливается по Pole1
Наконец то

ну да.. туплю(((
...
Рейтинг: 0 / 0
Выборка данных по нестандартным условиям
    #38650287
LisSp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
GloryLisSpпорядок устанавливается по Pole1
Наконец то

прошу понять, простить и помочь)
Можно ли что-то всё-таки сделать в этой задаче методами t-sql?
...
Рейтинг: 0 / 0
Выборка данных по нестандартным условиям
    #38650326
iap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LisSp,

а версия какая?
...
Рейтинг: 0 / 0
Выборка данных по нестандартным условиям
    #38650333
WarAnt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LisSpGloryпропущено...

Наконец то

прошу понять, простить и помочь)
Можно ли что-то всё-таки сделать в этой задаче методами t-sql?


навскидку
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
create table #t (p1 int, p2 int, p3 int)
insert #t values (1,0,1),(2,0,2),(3,0,1),(4,0,2),(5,1,2),(6,0,2),(7,0,1),(8,0,2)

select t1.* from #t t1 join
(select p11,p22 from 
#t t1 
cross apply (select top 1 p1 p11 from #t where p1 < t1.p1 and p3 = 1 and t1.p2 = 1 order by p1 desc) t2
cross apply (select top 1 p1 p22 from #t where p1 > t1.p1 and p3 = 1 and t1.p2 = 1  order by p1 desc) t3) t2
on t1.p1 >= p11 and t1.p1 < p22
...
Рейтинг: 0 / 0
Выборка данных по нестандартным условиям
    #38650335
LisSp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
iapLisSp,

а версия какая?

2008 R2 standart
...
Рейтинг: 0 / 0
Выборка данных по нестандартным условиям
    #38650341
LisSp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
WarAntLisSpпропущено...


прошу понять, простить и помочь)
Можно ли что-то всё-таки сделать в этой задаче методами t-sql?


навскидку
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
create table #t (p1 int, p2 int, p3 int)
insert #t values (1,0,1),(2,0,2),(3,0,1),(4,0,2),(5,1,2),(6,0,2),(7,0,1),(8,0,2)

select t1.* from #t t1 join
(select p11,p22 from 
#t t1 
cross apply (select top 1 p1 p11 from #t where p1 < t1.p1 and p3 = 1 and t1.p2 = 1 order by p1 desc) t2
cross apply (select top 1 p1 p22 from #t where p1 > t1.p1 and p3 = 1 and t1.p2 = 1  order by p1 desc) t3) t2
on t1.p1 >= p11 and t1.p1 < p22



Спасибо! Только у меня этих #t values может быть несколько тысяч и число плавающее
...
Рейтинг: 0 / 0
Выборка данных по нестандартным условиям
    #38650344
WarAnt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LisSpWarAntпропущено...



навскидку
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
create table #t (p1 int, p2 int, p3 int)
insert #t values (1,0,1),(2,0,2),(3,0,1),(4,0,2),(5,1,2),(6,0,2),(7,0,1),(8,0,2)

select t1.* from #t t1 join
(select p11,p22 from 
#t t1 
cross apply (select top 1 p1 p11 from #t where p1 < t1.p1 and p3 = 1 and t1.p2 = 1 order by p1 desc) t2
cross apply (select top 1 p1 p22 from #t where p1 > t1.p1 and p3 = 1 and t1.p2 = 1  order by p1 desc) t3) t2
on t1.p1 >= p11 and t1.p1 < p22



Спасибо! Только у меня этих #t values может быть несколько тысяч и число плавающее
выделенное уберите
...
Рейтинг: 0 / 0
Выборка данных по нестандартным условиям
    #38650346
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
declare @t table (Pole1 varchar(10), Pole2 varchar(10), Pole3 varchar(10));
insert into @t
values
('Znach1', '0K', '1S'),
('Znach2', '0K', '2S'),
('Znach3', '0K', '1S'),
('Znach4', '0K', '2S'),
('Znach5', '1K', '2S'),
('Znach6', '0K', '2S'),
('Znach7', '0K', '1S'),
('Znach8', '0K', '2S');

select
 t2.*
from
 @t t1 cross apply
 (select top (1) Pole1 from @t where Pole1 < t1.Pole1 and Pole3 = '1S' order by Pole1 desc) a(Pole1) cross apply
 (select top (1) Pole1 from @t where Pole1 > t1.Pole1 and Pole3 = '1S' order by Pole1) b(Pole1) join
 @t t2 on t2.Pole1 >= a.Pole1 and t2.Pole1 < b.Pole1
where
 t1.Pole2 = '1K'
order by
 t2.Pole1;
...
Рейтинг: 0 / 0
Выборка данных по нестандартным условиям
    #38650349
LisSp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо!!! Попробую!
...
Рейтинг: 0 / 0
Выборка данных по нестандартным условиям
    #38650351
Фотография a_voronin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CROSS APLLY или OUTER APPLY

если надо проаггрегировать только, а не выводить поля, то есть конструкция UNBOUNDED PRECEDING ROWS -- см MSDN
...
Рейтинг: 0 / 0
Выборка данных по нестандартным условиям
    #38650353
WarAnt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LisSp,


Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
declare  @t table (p1 int, p2 int, p3 int)
insert @t values (1,0,1),(2,0,2),(3,0,1),(4,0,2),(5,1,2),(6,0,2),(7,0,1),(8,0,2)
insert @t values (9,1,2),(10,0,2),(11,0,1)

select t1.* from @t t1 join
(select p11,p22 from 
@t t1 
cross apply (select top 1 p1 p11 from @t where p1 < t1.p1 and p3 = 1 and t1.p2 = 1 order by p1 desc) t2
cross apply (select top 1 p1 p22 from @t where p1 > t1.p1 and p3 = 1 and t1.p2 = 1 order by p1) t3) t2
on t1.p1 >= p11 and t1.p1 < p22


так?
p1 p2 p3 блок3 0 1 первый блок4 0 25 1 26 0 27 0 1 второй блок8 0 29 1 210 0 2
...
Рейтинг: 0 / 0
Выборка данных по нестандартным условиям
    #38650358
Фотография Shakill
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
a_voroninCROSS APLLY или OUTER APPLY

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


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