Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 [2] 3   вперед  Ctrl      все
 Re: Правильно указать min и max  [new]
katish444
Member

Откуда:
Сообщений: 261
TaPaK, он выдают что от 0 до 200 документировал Петров...
Это не то что я просила
23 янв 18, 11:28    [21129603]     Ответить | Цитировать Сообщить модератору
 Re: Правильно указать min и max  [new]
katish444
Member

Откуда:
Сообщений: 261
TaPaK, подскажите пожалуйста каким образом Koppely получил вторую таблицу?
23 янв 18, 11:29    [21129610]     Ответить | Цитировать Сообщить модератору
 Re: Правильно указать min и max  [new]
Kopelly
Member

Откуда: Красноярск
Сообщений: 289
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
23 янв 18, 11:30    [21129616]     Ответить | Цитировать Сообщить модератору
 Re: Правильно указать min и max  [new]
katish444
Member

Откуда:
Сообщений: 261
Спасибо большое
Можно злоупотребить и спросить для "особо одаренных"
у меня sql прям вешается, он как бы и не ругается что неверно, но и скрипт не отрабатывает, условие
where name = 'Lith_LoggedBy' and holeid = 'hr-1' я вставила везде где только можно.
У меня около 30 000 скважин, и на каждую записей в поле name около 500
Как мне быть, почему он виснет? что не так?

Kopelly
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
23 янв 18, 11:39    [21129661]     Ответить | Цитировать Сообщить модератору
 Re: Правильно указать min и max  [new]
Добрый Э - Эх
Guest
katish444,

держи, горемычная....
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
23 янв 18, 11:41    [21129672]     Ответить | Цитировать Сообщить модератору
 Re: Правильно указать min и max  [new]
Добрый Э - Эх
Guest
katish444
Спасибо большое
Можно злоупотребить и спросить для "особо одаренных"
у меня sql прям вешается, он как бы и не ругается что неверно, но и скрипт не отрабатывает, условие
where name = 'Lith_LoggedBy' and holeid = 'hr-1' я вставила везде где только можно.
У меня около 30 000 скважин, и на каждую записей в поле name около 500
Как мне быть, почему он виснет? что не так?

достала ты сервер. вот он и вешается от тебя и твоих запросов к нему...


З.Ы.
А если серьезно, то без информации о структуре таблиц и схемы её индексирования, количестве данных и их распределения, настройках сервера и текущего распределения и сбора статистики - никто тебе не скажет, почему твой сервер тормозит.
Может индексов не хватает, может статистика устарела. и таких "может" - страницы топика не хватит, чтобы все перечислить...
23 янв 18, 11:44    [21129701]     Ответить | Цитировать Сообщить модератору
 Re: Правильно указать min и max  [new]
katish444
Member

Откуда:
Сообщений: 261
Не объединяет он.... пишет все подряд интервалы
P.S. TSV - это типо фамилия

[img=]


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

держи, горемычная....
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


К сообщению приложен файл. Размер - 72Kb
23 янв 18, 11:48    [21129727]     Ответить | Цитировать Сообщить модератору
 Re: Правильно указать min и max  [new]
katish444
Member

Откуда:
Сообщений: 261
Йахуууууууууу!
Вы же супер гениальные люди тут седите

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

Kopelly
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
23 янв 18, 11:50    [21129756]     Ответить | Цитировать Сообщить модератору
 Re: Правильно указать min и max  [new]
katish444
Member

Откуда:
Сообщений: 261
Добрый Э - Эх,
Спасибо большое добрые люди)))
Наконец-то получилось, аж плясать охото
Ура! Ура! Ура!
23 янв 18, 11:51    [21129764]     Ответить | Цитировать Сообщить модератору
 Re: Правильно указать min и max  [new]
katish444
Member

Откуда:
Сообщений: 261
katish444, сидите*
23 янв 18, 11:52    [21129768]     Ответить | Цитировать Сообщить модератору
 Re: Правильно указать min и max  [new]
Добрый Э - Эх
Guest
katish444,

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

а по проблеме - скорее всего, ты в первом своем сообщении наименования полей и данные к ним перепутала. проверь ещё раз свою определение таблицы и её заполнение данными (в стартовом сообщении топика).
23 янв 18, 11:52    [21129774]     Ответить | Цитировать Сообщить модератору
 Re: Правильно указать min и max  [new]
Добрый Э - Эх
Guest
katish444,

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


Какой вариант по итогу заработал и выдал правильные данные? и Почему первый раз "не собрало"?
23 янв 18, 11:55    [21129805]     Ответить | Цитировать Сообщить модератору
 Re: Правильно указать min и max  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6794
for fun
в производительности не уверен, но в один проход должно работать

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
23 янв 18, 12:05    [21129885]     Ответить | Цитировать Сообщить модератору
 Re: Правильно указать min и max  [new]
Добрый Э - Эх
Guest
TaPaK
for fun
в производительности не уверен, но в один проход должно работать

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

не взлетит... для примера проверь на таких данных:
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', 'Сидоров' )
23 янв 18, 12:10    [21129925]     Ответить | Цитировать Сообщить модератору
 Re: Правильно указать min и max  [new]
Добрый Э - Эх
Guest
Добрый Э - Эх
TaPaK
for fun
в производительности не уверен, но в один проход должно работать

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

не взлетит... для примера проверь на таких данных:
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', 'Сидоров' )

небольшая опечаточка закралась.... но сути не меняет - не взлетит...
23 янв 18, 12:12    [21129938]     Ответить | Цитировать Сообщить модератору
 Re: Правильно указать min и max  [new]
katish444
Member

Откуда:
Сообщений: 261
Добрый Э - Эх, заработал первый скрипт от Kopelly
я его и использовала
Ваш скрипт почему то не берет min/max я прислала скрин выше, он почему то берет все подряд интервалы
Но все равно спаисбо
23 янв 18, 12:17    [21129975]     Ответить | Цитировать Сообщить модератору
 Re: Правильно указать min и max  [new]
katish444
Member

Откуда:
Сообщений: 261
Этот тоже все подряд интервалы выдает

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

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
23 янв 18, 12:20    [21129997]     Ответить | Цитировать Сообщить модератору
 Re: Правильно указать min и max  [new]
Добрый Э - Эх
Guest
katish444,

я тебе выложил готовый тест-кейс, с тестовыми данными и запросом. Запрос всё отлично собирает. Если у тебя другой результат - значит ты что-то сделала не так.... Проверь всё ещё раз. ;)
Либо приведи прям те самые данные, на которых он не отработал...
23 янв 18, 12:21    [21129998]     Ответить | Цитировать Сообщить модератору
 Re: Правильно указать min и max  [new]
katish444
Member

Откуда:
Сообщений: 261
Ребята, спасибо всем большое за помощь

Это мега здорово, что есть такие люди небезразличные к чужим мозговым мучениям
Спасибо
23 янв 18, 12:22    [21130005]     Ответить | Цитировать Сообщить модератору
 Re: Правильно указать min и max  [new]
katish444
Member

Откуда:
Сообщений: 261
сейчас попробую еще раз отработать
У меня данные другие, возможно я не везде поменяла именя своих таблиц
Добрый Э - Эх
katish444,

я тебе выложил готовый тест-кейс, с тестовыми данными и запросом. Запрос всё отлично собирает. Если у тебя другой результат - значит ты что-то сделала не так.... Проверь всё ещё раз. ;)
Либо приведи прям те самые данные, на которых он не отработал...
23 янв 18, 12:23    [21130016]     Ответить | Цитировать Сообщить модератору
 Re: Правильно указать min и max  [new]
Kopelly
Member

Откуда: Красноярск
Сообщений: 289
katish444
Ваш скрипт почему то не берет min/max я прислала скрин выше, он почему то берет все подряд интервалы

Скрипт Доброго Э-ЭХа работает на тестовом наборе, должен работать и на рабочей таблице.
Может неправильно перенесли на рабочую таблицу?
23 янв 18, 12:24    [21130028]     Ответить | Цитировать Сообщить модератору
 Re: Правильно указать min и max  [new]
Добрый Э - Эх
Guest
katish444
Этот тоже все подряд интервалы выдает

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

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
этот вариант завязан на "магию" данных. в общем случае - он нерабочий. нет "магии" - нет правильного результата ;) :)
23 янв 18, 12:38    [21130116]     Ответить | Цитировать Сообщить модератору
 Re: Правильно указать min и max  [new]
Добрый Э - Эх
Guest
TaPaK,

lead/lag прикрутить можно, конечно, но только в таком вот исполнении:
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
23 янв 18, 12:47    [21130154]     Ответить | Цитировать Сообщить модератору
 Re: Правильно указать min и max  [new]
Добрый Э - Эх
Guest
Добрый Э - Эх,

с lead будет так:
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
23 янв 18, 12:56    [21130200]     Ответить | Цитировать Сообщить модератору
 Re: Правильно указать min и max  [new]
Добрый Э - Эх
Guest
Kopelly,

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

З.Ы.
2 модераторы...
сорри за злостный оффтоп :)
23 янв 18, 13:12    [21130270]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 [2] 3   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить