powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Правильно указать min и max
25 сообщений из 72, страница 2 из 3
Правильно указать min и max
    #39588965
katish444
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
TaPaK, он выдают что от 0 до 200 документировал Петров...
Это не то что я просила
...
Рейтинг: 0 / 0
Правильно указать min и max
    #39588967
katish444
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
TaPaK, подскажите пожалуйста каким образом Koppely получил вторую таблицу?
...
Рейтинг: 0 / 0
Правильно указать min и max
    #39588969
Kopelly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
katish444,

declare @t table (holeid varchar(5), geolfrom int, geolto int, name varchar(15), value varchar(10));
insert into @t values 
 ( 'hr-1', 0, 8, 'Lith_LoggedBy', 'Петров' )
, ( 'hr-1', 8, 50, 'Lith_LoggedBy', 'Сидоров' )
, ( 'hr-1', 50, 100, 'Lith_LoggedBy', 'Сидоров' )
, ( 'hr-1', 100, 150, 'Lith_LoggedBy', 'Петров' )
, ( 'hr-1', 150, 200, 'Lith_LoggedBy', 'Петров' )
, ( 'hr-1', 200, 250, 'Lith_LoggedBy', 'Сидоров' )
, ( 'hr-1', 250, 300, 'Lith_LoggedBy', 'Сидоров' )



Select a.holeid, min(a.geolfrom),max(a.geolto),a.name,a.value From @t a
outer apply (Select top 1 * From @t b Where a.holeid = b.holeid and a.name = b.name and a.geolfrom > b.geolfrom and a.value <> b.value Order by b.geolfrom desc) b
group by a.holeid,a.name,a.value,b.geolto
...
Рейтинг: 0 / 0
Правильно указать min и max
    #39588978
katish444
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо большое
Можно злоупотребить и спросить для "особо одаренных"
у меня sql прям вешается, он как бы и не ругается что неверно, но и скрипт не отрабатывает, условие
where name = 'Lith_LoggedBy' and holeid = 'hr-1' я вставила везде где только можно.
У меня около 30 000 скважин, и на каждую записей в поле name около 500
Как мне быть, почему он виснет? что не так?

Kopelly
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
katish444,

declare @t table (holeid varchar(5), geolfrom int, geolto int, name varchar(15), value varchar(10));
insert into @t values 
 ( 'hr-1', 0, 8, 'Lith_LoggedBy', 'Петров' )
, ( 'hr-1', 8, 50, 'Lith_LoggedBy', 'Сидоров' )
, ( 'hr-1', 50, 100, 'Lith_LoggedBy', 'Сидоров' )
, ( 'hr-1', 100, 150, 'Lith_LoggedBy', 'Петров' )
, ( 'hr-1', 150, 200, 'Lith_LoggedBy', 'Петров' )
, ( 'hr-1', 200, 250, 'Lith_LoggedBy', 'Сидоров' )
, ( 'hr-1', 250, 300, 'Lith_LoggedBy', 'Сидоров' )



Select a.holeid, min(a.geolfrom),max(a.geolto),a.name,a.value From @t a
outer apply (Select top 1 * From @t b Where a.holeid = b.holeid and a.name = b.name and a.geolfrom > b.geolfrom and a.value <> b.value Order by b.geolfrom desc) b
group by a.holeid,a.name,a.value,b.geolto
...
Рейтинг: 0 / 0
Правильно указать min и max
    #39588980
katish444,

держи, горемычная....
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
declare @t table (holeid varchar(30), [from] int, [to] int, name varchar(30), value varchar(30) );
insert into @t values 
 ( 'hr-1', 0, 8, 'Lith_LoggedBy', 'Петров' )
, ( 'hr-1', 8, 50, 'Lith_LoggedBy', 'Сидоров' )
, ( 'hr-1', 50, 100, 'Lith_LoggedBy', 'Сидоров' )
, ( 'hr-1', 100, 150, 'Lith_LoggedBy', 'Петров' )
, ( 'hr-1', 150, 200, 'Lith_LoggedBy', 'Петров' )
, ( 'hr-1', 200, 250, 'Lith_LoggedBy', 'Сидоров' )
, ( 'hr-1', 250, 300, 'Lith_LoggedBy', 'Сидоров' )


select holeid, name, value, min([from]) as minfrom, max([to]) as maxto
  from (
         select *
		      , row_number() over(partition by holeid, value order by [from]) - 
			    row_number() over(partition by holeid order by [from]) as grp_id
		   from @t
       ) v
 group by holeid, name, value, grp_id
 order by minfrom
...
Рейтинг: 0 / 0
Правильно указать min и max
    #39588984
katish444Спасибо большое
Можно злоупотребить и спросить для "особо одаренных"
у меня sql прям вешается, он как бы и не ругается что неверно, но и скрипт не отрабатывает, условие
where name = 'Lith_LoggedBy' and holeid = 'hr-1' я вставила везде где только можно.
У меня около 30 000 скважин, и на каждую записей в поле name около 500
Как мне быть, почему он виснет? что не так?
достала ты сервер. вот он и вешается от тебя и твоих запросов к нему...


З.Ы.
А если серьезно, то без информации о структуре таблиц и схемы её индексирования, количестве данных и их распределения, настройках сервера и текущего распределения и сбора статистики - никто тебе не скажет, почему твой сервер тормозит.
Может индексов не хватает, может статистика устарела. и таких "может" - страницы топика не хватит, чтобы все перечислить...
...
Рейтинг: 0 / 0
Правильно указать min и max
    #39588991
katish444
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не объединяет он.... пишет все подряд интервалы
P.S. TSV - это типо фамилия

[img=]


Добрый Э - Эхkatish444,

держи, горемычная....
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
declare @t table (holeid varchar(30), [from] int, [to] int, name varchar(30), value varchar(30) );
insert into @t values 
 ( 'hr-1', 0, 8, 'Lith_LoggedBy', 'Петров' )
, ( 'hr-1', 8, 50, 'Lith_LoggedBy', 'Сидоров' )
, ( 'hr-1', 50, 100, 'Lith_LoggedBy', 'Сидоров' )
, ( 'hr-1', 100, 150, 'Lith_LoggedBy', 'Петров' )
, ( 'hr-1', 150, 200, 'Lith_LoggedBy', 'Петров' )
, ( 'hr-1', 200, 250, 'Lith_LoggedBy', 'Сидоров' )
, ( 'hr-1', 250, 300, 'Lith_LoggedBy', 'Сидоров' )


select holeid, name, value, min([from]) as minfrom, max([to]) as maxto
  from (
         select *
		      , row_number() over(partition by holeid, value order by [from]) - 
			    row_number() over(partition by holeid order by [from]) as grp_id
		   from @t
       ) v
 group by holeid, name, value, grp_id
 order by minfrom
...
Рейтинг: 0 / 0
Правильно указать min и max
    #39588994
katish444
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Йахуууууууууу!
Вы же супер гениальные люди тут седите

Спасибо всем большое!

Kopelly
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
katish444,

declare @t table (holeid varchar(5), geolfrom int, geolto int, name varchar(15), value varchar(10));
insert into @t values 
 ( 'hr-1', 0, 8, 'Lith_LoggedBy', 'Петров' )
, ( 'hr-1', 8, 50, 'Lith_LoggedBy', 'Сидоров' )
, ( 'hr-1', 50, 100, 'Lith_LoggedBy', 'Сидоров' )
, ( 'hr-1', 100, 150, 'Lith_LoggedBy', 'Петров' )
, ( 'hr-1', 150, 200, 'Lith_LoggedBy', 'Петров' )
, ( 'hr-1', 200, 250, 'Lith_LoggedBy', 'Сидоров' )
, ( 'hr-1', 250, 300, 'Lith_LoggedBy', 'Сидоров' )



Select a.holeid, min(a.geolfrom),max(a.geolto),a.name,a.value From @t a
outer apply (Select top 1 * From @t b Where a.holeid = b.holeid and a.name = b.name and a.geolfrom > b.geolfrom and a.value <> b.value Order by b.geolfrom desc) b
group by a.holeid,a.name,a.value,b.geolto
...
Рейтинг: 0 / 0
Правильно указать min и max
    #39588995
katish444
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый Э - Эх,
Спасибо большое добрые люди)))
Наконец-то получилось, аж плясать охото
Ура! Ура! Ура!
...
Рейтинг: 0 / 0
Правильно указать min и max
    #39588996
katish444
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
katish444, сидите*
...
Рейтинг: 0 / 0
Правильно указать min и max
    #39588997
katish444,

но хоть доработал до конца, выдав результат, и то уже радует.... :)

а по проблеме - скорее всего, ты в первом своем сообщении наименования полей и данные к ним перепутала. проверь ещё раз свою определение таблицы и её заполнение данными (в стартовом сообщении топика).
...
Рейтинг: 0 / 0
Правильно указать min и max
    #39589003
katish444,

ты постишь сообщения быстрее, чем люди успевают их понять и обдумать....


Какой вариант по итогу заработал и выдал правильные данные? и Почему первый раз "не собрало"?
...
Рейтинг: 0 / 0
Правильно указать min и max
    #39589006
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
for fun
в производительности не уверен, но в один проход должно работать

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
declare @t table (holeid varchar(255), f int, t int, name varchar(255), value varchar(255) );
insert into @t values 
 ( 'hr-1', 0, 8, 'Lith_LoggedBy', 'Петров' )
, ( 'hr-1', 8, 50, 'Lith_LoggedBy', 'Сидоров' )
, ( 'hr-1', 50, 100, 'Lith_LoggedBy', 'Сидоров' )
, ( 'hr-1', 100, 150, 'Lith_LoggedBy', 'Петров' )
, ( 'hr-1', 150, 200, 'Lith_LoggedBy', 'Петров' )
, ( 'hr-1', 200, 250, 'Lith_LoggedBy', 'Сидоров' )
, ( 'hr-1', 250, 300, 'Lith_LoggedBy', 'Сидоров' )


SELECT DISTINCT
	ISNULL(CASE LEAD(value) OVER ( ORDER BY f) WHEN value THEN f ELSE LAG(f) OVER ( ORDER BY f) END	,MIN(f)),
	ISNULL(CASE LEAD(value) OVER ( ORDER BY f) WHEN value THEN t ELSE LAG(t) OVER ( ORDER BY f) END	,min(t))
	HoleId,
	Name,
	Value
FROM @t
GROUP BY holeid,value,f,t,name
...
Рейтинг: 0 / 0
Правильно указать min и max
    #39589008
TaPaKfor fun
в производительности не уверен, но в один проход должно работать

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
declare @t table (holeid varchar(255), f int, t int, name varchar(255), value varchar(255) );
insert into @t values 
 ( 'hr-1', 0, 8, 'Lith_LoggedBy', 'Петров' )
, ( 'hr-1', 8, 50, 'Lith_LoggedBy', 'Сидоров' )
, ( 'hr-1', 50, 100, 'Lith_LoggedBy', 'Сидоров' )
, ( 'hr-1', 100, 150, 'Lith_LoggedBy', 'Петров' )
, ( 'hr-1', 150, 200, 'Lith_LoggedBy', 'Петров' )
, ( 'hr-1', 200, 250, 'Lith_LoggedBy', 'Сидоров' )
, ( 'hr-1', 250, 300, 'Lith_LoggedBy', 'Сидоров' )


SELECT DISTINCT
	ISNULL(CASE LEAD(value) OVER ( ORDER BY f) WHEN value THEN f ELSE LAG(f) OVER ( ORDER BY f) END	,MIN(f)),
	ISNULL(CASE LEAD(value) OVER ( ORDER BY f) WHEN value THEN t ELSE LAG(t) OVER ( ORDER BY f) END	,min(t))
	HoleId,
	Name,
	Value
FROM @t
GROUP BY holeid,value,f,t,name


не взлетит... для примера проверь на таких данных:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
declare @t table (holeid varchar(255), f int, t int, name varchar(255), value varchar(255) );
insert into @t values 
 ( 'hr-1', 0, 8, 'Lith_LoggedBy', 'Петров' )
, ( 'hr-1', 8, 10, 'Lith_LoggedBy', 'Сидоров' )
, ( 'hr-1', 10, 20, 'Lith_LoggedBy', 'Сидоров' )
, ( 'hr-1', 2, 50, 'Lith_LoggedBy', 'Сидоров' )
, ( 'hr-1', 50, 100, 'Lith_LoggedBy', 'Сидоров' )
, ( 'hr-1', 100, 150, 'Lith_LoggedBy', 'Петров' )
, ( 'hr-1', 150, 200, 'Lith_LoggedBy', 'Петров' )
, ( 'hr-1', 200, 250, 'Lith_LoggedBy', 'Сидоров' )
, ( 'hr-1', 250, 300, 'Lith_LoggedBy', 'Сидоров' )
...
Рейтинг: 0 / 0
Правильно указать min и max
    #39589011
Добрый Э - ЭхTaPaKfor fun
в производительности не уверен, но в один проход должно работать

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
declare @t table (holeid varchar(255), f int, t int, name varchar(255), value varchar(255) );
insert into @t values 
 ( 'hr-1', 0, 8, 'Lith_LoggedBy', 'Петров' )
, ( 'hr-1', 8, 50, 'Lith_LoggedBy', 'Сидоров' )
, ( 'hr-1', 50, 100, 'Lith_LoggedBy', 'Сидоров' )
, ( 'hr-1', 100, 150, 'Lith_LoggedBy', 'Петров' )
, ( 'hr-1', 150, 200, 'Lith_LoggedBy', 'Петров' )
, ( 'hr-1', 200, 250, 'Lith_LoggedBy', 'Сидоров' )
, ( 'hr-1', 250, 300, 'Lith_LoggedBy', 'Сидоров' )


SELECT DISTINCT
	ISNULL(CASE LEAD(value) OVER ( ORDER BY f) WHEN value THEN f ELSE LAG(f) OVER ( ORDER BY f) END	,MIN(f)),
	ISNULL(CASE LEAD(value) OVER ( ORDER BY f) WHEN value THEN t ELSE LAG(t) OVER ( ORDER BY f) END	,min(t))
	HoleId,
	Name,
	Value
FROM @t
GROUP BY holeid,value,f,t,name


не взлетит... для примера проверь на таких данных:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
declare @t table (holeid varchar(255), f int, t int, name varchar(255), value varchar(255) );
insert into @t values 
 ( 'hr-1', 0, 8, 'Lith_LoggedBy', 'Петров' )
, ( 'hr-1', 8, 10, 'Lith_LoggedBy', 'Сидоров' )
, ( 'hr-1', 10, 20, 'Lith_LoggedBy', 'Сидоров' )
, ( 'hr-1', 20, 50, 'Lith_LoggedBy', 'Сидоров' )
, ( 'hr-1', 50, 100, 'Lith_LoggedBy', 'Сидоров' )
, ( 'hr-1', 100, 150, 'Lith_LoggedBy', 'Петров' )
, ( 'hr-1', 150, 200, 'Lith_LoggedBy', 'Петров' )
, ( 'hr-1', 200, 250, 'Lith_LoggedBy', 'Сидоров' )
, ( 'hr-1', 250, 300, 'Lith_LoggedBy', 'Сидоров' )


небольшая опечаточка закралась.... но сути не меняет - не взлетит...
...
Рейтинг: 0 / 0
Правильно указать min и max
    #39589013
katish444
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый Э - Эх, заработал первый скрипт от Kopelly
я его и использовала
Ваш скрипт почему то не берет min/max я прислала скрин выше, он почему то берет все подряд интервалы
Но все равно спаисбо
...
Рейтинг: 0 / 0
Правильно указать min и max
    #39589014
katish444
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Этот тоже все подряд интервалы выдает

TaPaKfor fun
в производительности не уверен, но в один проход должно работать

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
declare @t table (holeid varchar(255), f int, t int, name varchar(255), value varchar(255) );
insert into @t values 
 ( 'hr-1', 0, 8, 'Lith_LoggedBy', 'Петров' )
, ( 'hr-1', 8, 50, 'Lith_LoggedBy', 'Сидоров' )
, ( 'hr-1', 50, 100, 'Lith_LoggedBy', 'Сидоров' )
, ( 'hr-1', 100, 150, 'Lith_LoggedBy', 'Петров' )
, ( 'hr-1', 150, 200, 'Lith_LoggedBy', 'Петров' )
, ( 'hr-1', 200, 250, 'Lith_LoggedBy', 'Сидоров' )
, ( 'hr-1', 250, 300, 'Lith_LoggedBy', 'Сидоров' )


SELECT DISTINCT
	ISNULL(CASE LEAD(value) OVER ( ORDER BY f) WHEN value THEN f ELSE LAG(f) OVER ( ORDER BY f) END	,MIN(f)),
	ISNULL(CASE LEAD(value) OVER ( ORDER BY f) WHEN value THEN t ELSE LAG(t) OVER ( ORDER BY f) END	,min(t))
	HoleId,
	Name,
	Value
FROM @t
GROUP BY holeid,value,f,t,name
...
Рейтинг: 0 / 0
Правильно указать min и max
    #39589015
katish444,

я тебе выложил готовый тест-кейс, с тестовыми данными и запросом. Запрос всё отлично собирает. Если у тебя другой результат - значит ты что-то сделала не так.... Проверь всё ещё раз. ;)
Либо приведи прям те самые данные, на которых он не отработал...
...
Рейтинг: 0 / 0
Правильно указать min и max
    #39589017
katish444
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ребята, спасибо всем большое за помощь

Это мега здорово, что есть такие люди небезразличные к чужим мозговым мучениям
Спасибо
...
Рейтинг: 0 / 0
Правильно указать min и max
    #39589018
katish444
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
сейчас попробую еще раз отработать
У меня данные другие, возможно я не везде поменяла именя своих таблиц
Добрый Э - Эхkatish444,

я тебе выложил готовый тест-кейс, с тестовыми данными и запросом. Запрос всё отлично собирает. Если у тебя другой результат - значит ты что-то сделала не так.... Проверь всё ещё раз. ;)
Либо приведи прям те самые данные, на которых он не отработал...
...
Рейтинг: 0 / 0
Правильно указать min и max
    #39589020
Kopelly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
katish444Ваш скрипт почему то не берет min/max я прислала скрин выше, он почему то берет все подряд интервалы
Скрипт Доброго Э-ЭХа работает на тестовом наборе, должен работать и на рабочей таблице.
Может неправильно перенесли на рабочую таблицу?
...
Рейтинг: 0 / 0
Правильно указать min и max
    #39589032
katish444Этот тоже все подряд интервалы выдает

TaPaKfor fun
в производительности не уверен, но в один проход должно работать

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
declare @t table (holeid varchar(255), f int, t int, name varchar(255), value varchar(255) );
insert into @t values 
 ( 'hr-1', 0, 8, 'Lith_LoggedBy', 'Петров' )
, ( 'hr-1', 8, 50, 'Lith_LoggedBy', 'Сидоров' )
, ( 'hr-1', 50, 100, 'Lith_LoggedBy', 'Сидоров' )
, ( 'hr-1', 100, 150, 'Lith_LoggedBy', 'Петров' )
, ( 'hr-1', 150, 200, 'Lith_LoggedBy', 'Петров' )
, ( 'hr-1', 200, 250, 'Lith_LoggedBy', 'Сидоров' )
, ( 'hr-1', 250, 300, 'Lith_LoggedBy', 'Сидоров' )


SELECT DISTINCT
	ISNULL(CASE LEAD(value) OVER ( ORDER BY f) WHEN value THEN f ELSE LAG(f) OVER ( ORDER BY f) END	,MIN(f)),
	ISNULL(CASE LEAD(value) OVER ( ORDER BY f) WHEN value THEN t ELSE LAG(t) OVER ( ORDER BY f) END	,min(t))
	HoleId,
	Name,
	Value
FROM @t
GROUP BY holeid,value,f,t,name

этот вариант завязан на "магию" данных. в общем случае - он нерабочий. нет "магии" - нет правильного результата ;) :)
...
Рейтинг: 0 / 0
Правильно указать min и max
    #39589034
TaPaK,

lead/lag прикрутить можно, конечно, но только в таком вот исполнении:
Код: 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.
declare @t table (holeid varchar(255), f int, t int, name varchar(255), value varchar(255) );
insert into @t values 
 ( 'hr-1', 0, 8, 'Lith_LoggedBy', 'Петров' )
, ( 'hr-1', 8, 50, 'Lith_LoggedBy', 'Сидоров' )
, ( 'hr-1', 50, 80, 'Lith_LoggedBy', 'Сидоров' )
, ( 'hr-1', 80, 100, 'Lith_LoggedBy', 'Сидоров' )
, ( 'hr-1', 100, 120, 'Lith_LoggedBy', 'Петров' )
, ( 'hr-1', 120, 150, 'Lith_LoggedBy', 'Петров' )
, ( 'hr-1', 150, 200, 'Lith_LoggedBy', 'Петров' )
, ( 'hr-1', 200, 250, 'Lith_LoggedBy', 'Сидоров' )
, ( 'hr-1', 250, 300, 'Lith_LoggedBy', 'Сидоров' )


select holeid, name, value, min(f) min_f, max(f) max_f
  from (
         select *, sum(start_of_group) over(partition by holeid order by f) as grp_id 
           from (
                  SELECT *
                       , case lag(value) over(partition by holeid order by f) 
                           when value 
                             then 0 
                           else 1 
                         end as start_of_group
                    FROM @t
                ) v0
       ) v1
 group by holeid, name, value, grp_id
 order by min_f
...
Рейтинг: 0 / 0
Правильно указать min и max
    #39589038
Добрый Э - Эх,

с lead будет так:
Код: 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.
declare @t table (holeid varchar(255), f int, t int, name varchar(255), value varchar(255) );
insert into @t values 
 ( 'hr-1', 0, 8, 'Lith_LoggedBy', 'Петров' )
, ( 'hr-1', 8, 50, 'Lith_LoggedBy', 'Сидоров' )
, ( 'hr-1', 50, 80, 'Lith_LoggedBy', 'Сидоров' )
, ( 'hr-1', 80, 100, 'Lith_LoggedBy', 'Сидоров' )
, ( 'hr-1', 100, 120, 'Lith_LoggedBy', 'Петров' )
, ( 'hr-1', 120, 150, 'Lith_LoggedBy', 'Петров' )
, ( 'hr-1', 150, 200, 'Lith_LoggedBy', 'Петров' )
, ( 'hr-1', 200, 250, 'Lith_LoggedBy', 'Сидоров' )
, ( 'hr-1', 250, 300, 'Lith_LoggedBy', 'Сидоров' )


select holeid, name, value, min(f) min_f, max(f) max_f
  from (
         select *, sum(start_of_group) over(partition by holeid order by f) as grp_id 
           from (
                  SELECT *
                       , case lead(value) over(partition by holeid order by f desc) 
                           when value 
                             then 0 
                           else 1
                         end as start_of_group
                    FROM @t
                ) v0
       ) v1
 group by holeid, name, value, grp_id
 order by min_f
...
Рейтинг: 0 / 0
Правильно указать min и max
    #39589049
Kopelly,

если не секрет, где в Красноярске трудишься?

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


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