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

Откуда:
Сообщений: 261
Доброго всем дня. Подскажите пожалуйста как правильно составить запрос, чтобы минимальные и максимальные интервалы выбирались не по всей длинне, а пока документирует один и тот же человек. Сейчас поясню. Есть длинные скважина, пока ее бурили сменилось 3 смены, документировали ее несколько людей. Например, от 0 до 8 метров Петров, от 8 до 100 Сидоров, от 100 до 200 снова Петров и от 200 до 300 снова Сидоров. Когда просто использую min/max, то берет все по макисимуму, типо от 0 до 200 Петров. А мне надо чтобы было видно кто за какой интервал отвечает.

declare @t table (holeid varchar, from int, to int, name varchar, value varchar );
insert into @t values
( 'hr-1', 0, 8, 'Lith_LoggedBy', 'Петров' )
, ( 'hr-1', 8, 100, 'Lith_LoggedBy', 'Сидоров' )
, ( 'hr-1', 100, 200, 'Lith_LoggedBy', 'Петров' )
, ( 'hr-1', 200, 300, 'Lith_LoggedBy', 'Сидоров' )

Мой запрос таков
select holeid, min(geolfrom)minFROM, max(GEOLTO)maxTO, name, value from TABLE
where name = 'Lith_LoggedBy' and holeid = 'hr-1' group by holeid, name, value order by minFROM
23 янв 18, 10:54    [21129434]     Ответить | Цитировать Сообщить модератору
 Re: Правильно указать min и max  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6794
katish444,

MAX(value) OVER (PARTTION BY value)
23 янв 18, 10:59    [21129465]     Ответить | Цитировать Сообщить модератору
 Re: Правильно указать min и max  [new]
katish444
Member

Откуда:
Сообщений: 261
TaPaK, спасибо большое, а это куда вставить?
23 янв 18, 11:07    [21129505]     Ответить | Цитировать Сообщить модератору
 Re: Правильно указать min и max  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6794
katish444,
ох... ну как-то так
select holeid, min(geolfrom)minFROM OVER (PARTTION BY value) max(GEOLTO)maxTO OVER (PARTTION BY value), name, value from TABLE
where name = 'Lith_LoggedBy' and holeid = 'hr-1' 
23 янв 18, 11:09    [21129511]     Ответить | Цитировать Сообщить модератору
 Re: Правильно указать min и max  [new]
katish444
Member

Откуда:
Сообщений: 261
TaPaK, не работает...
Incorrect syntax near the keyword 'OVER'.
23 янв 18, 11:13    [21129533]     Ответить | Цитировать Сообщить модератору
 Re: Правильно указать min и max  [new]
Добрый Э - Эх
Guest
katish444,

запятулю пропустил. или скуль сервер не той системы....
23 янв 18, 11:14    [21129538]     Ответить | Цитировать Сообщить модератору
 Re: Правильно указать min и max  [new]
Kopelly
Member

Откуда: Красноярск
Сообщений: 289
katish444,
Тебе нужны строчки такого вида:
Протокол бурения
Петров с 0 до 8 и с 100 до 200
Сидоров с 8 до 100 и с 200 до 300

?

Или нужно объединение интервалов. то есть из:
declare @t table (holeid varchar, from int, to int, name varchar, value varchar );
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', 'Сидоров' )


Получить:
holeid from to name value
hr-1 0 8 Lith_LoggedBy Петров
hr-1 8 100 Lith_LoggedBy Сидоров
hr-1 100 200 Lith_LoggedBy Петров
hr-1 200 300 Lith_LoggedBy Сидоров
?
23 янв 18, 11:14    [21129541]     Ответить | Цитировать Сообщить модератору
 Re: Правильно указать min и max  [new]
Добрый Э - Эх
Guest
TaPaK
katish444,
ох... ну как-то так
select holeid, min(geolfrom) minFROM OVER (PARTTION BY value) ,  max(GEOLTO) maxTO OVER (PARTTION BY value), name, value from TABLE
where name = 'Lith_LoggedBy' and holeid = 'hr-1' 
23 янв 18, 11:15    [21129544]     Ответить | Цитировать Сообщить модератору
 Re: Правильно указать min и max  [new]
katish444
Member

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

а, опять бурение дырок?
23 янв 18, 11:16    [21129548]     Ответить | Цитировать Сообщить модератору
 Re: Правильно указать min и max  [new]
katish444
Member

Откуда:
Сообщений: 261
Kopelly,
да точно! Как вы так получили
23 янв 18, 11:17    [21129552]     Ответить | Цитировать Сообщить модератору
 Re: Правильно указать min и max  [new]
katish444
Member

Откуда:
Сообщений: 261
Добрый Э - Эх, не дырок, а скважин глубокого бурения))))
23 янв 18, 11:17    [21129553]     Ответить | Цитировать Сообщить модератору
 Re: Правильно указать min и max  [new]
Добрый Э - Эх
Guest
ещё ключевое слово PARTITION указан с ошибкой
Добрый Э - Эх
TaPaK
katish444,
ох... ну как-то так
select holeid, min(geolfrom) minFROM OVER (PARTTION BY value) ,  max(GEOLTO) maxTO OVER (PARTTION BY value), name, value from TABLE
where name = 'Lith_LoggedBy' and holeid = 'hr-1' 

нужно заменить PARTTION на PARTITION
23 янв 18, 11:18    [21129555]     Ответить | Цитировать Сообщить модератору
 Re: Правильно указать min и max  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6794
Добрый Э - Эх,

для сааааавсем ленивых, ещё и алиасы передвинуть
select holeid, min(geolfrom) OVER (PARTTION BY value) as minFROM,  max(GEOLTO) OVER (PARTTION BY value) as maxTO, name, value from TABLE
where name = 'Lith_LoggedBy' and holeid = 'hr-1' 
23 янв 18, 11:18    [21129556]     Ответить | Цитировать Сообщить модератору
 Re: Правильно указать min и max  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6794
Добрый Э - Эх,

факир не проснулся :)
23 янв 18, 11:18    [21129557]     Ответить | Цитировать Сообщить модератору
 Re: Правильно указать min и max  [new]
Добрый Э - Эх
Guest
katish444
Kopelly,
да точно! Как вы так получили
искать сообщения с моим участием и по ключевым словам "инвариант группы", "START_OF_GROUP" "GRP_ID"
23 янв 18, 11:19    [21129559]     Ответить | Цитировать Сообщить модератору
 Re: Правильно указать min и max  [new]
katish444
Member

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

Откуда: Красноярск
Сообщений: 289
katish444
Kopelly,
да точно! Как вы так получили

Так в чем задача? Получить протокол из двух строк или объединить интервалы?
23 янв 18, 11:20    [21129562]     Ответить | Цитировать Сообщить модератору
 Re: Правильно указать min и max  [new]
katish444
Member

Откуда:
Сообщений: 261
Kopelly, нужно знать кто документировал интервал.
Да, объединить нужно где это возможно
23 янв 18, 11:20    [21129566]     Ответить | Цитировать Сообщить модератору
 Re: Правильно указать min и max  [new]
katish444
Member

Откуда:
Сообщений: 261
Добрый Э - Эх,Incorrect syntax near 'PARTTION'.
блин блинский
почему у меня не выходит
23 янв 18, 11:23    [21129576]     Ответить | Цитировать Сообщить модератору
 Re: Правильно указать min и max  [new]
xenix
Guest
katish444,

PARTITION
23 янв 18, 11:24    [21129581]     Ответить | Цитировать Сообщить модератору
 Re: Правильно указать min и max  [new]
katish444
Member

Откуда:
Сообщений: 261
TaPaK, мой скрипт не верен даже с вашими исправлениями - выдает не то что надо
23 янв 18, 11:26    [21129587]     Ответить | Цитировать Сообщить модератору
 Re: Правильно указать min и max  [new]
katish444
Member

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

Откуда: Kiev
Сообщений: 6794
katish444
TaPaK, мой скрипт не верен даже с вашими исправлениями - выдает не то что надо

он даёт то что вы просили, а то что вы не в состояние озвучить тз, это не проблема енотов
23 янв 18, 11:27    [21129596]     Ответить | Цитировать Сообщить модератору
 Re: Правильно указать min и max  [new]
katish444
Member

Откуда:
Сообщений: 261
откройте пожалуйста секрет, как получить вторую таблицу?
Kopelly
katish444,
Тебе нужны строчки такого вида:
Протокол бурения
Петров с 0 до 8 и с 100 до 200
Сидоров с 8 до 100 и с 200 до 300

?

Или нужно объединение интервалов. то есть из:
declare @t table (holeid varchar, from int, to int, name varchar, value varchar );
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', 'Сидоров' )


Получить:
holeid from to name value
hr-1 0 8 Lith_LoggedBy Петров
hr-1 8 100 Lith_LoggedBy Сидоров
hr-1 100 200 Lith_LoggedBy Петров
hr-1 200 300 Lith_LoggedBy Сидоров
?
23 янв 18, 11:27    [21129597]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2 3   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить