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

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

declare @GEODETAIL table (Holeid varchar(20), geolfrom float, geolto float, name varchar(20),value varchar(20))
insert into @GEODETAIL (holeid, geolfrom, geolto, name, value) values
('hr-1',0,8,'Lith_RockName','Песчанник'),
('hr-1',8,50,'Lith_RockName','Алевролит'),
('hr-1',50,100,'Lith_RockName','Известняк'),
('hr-1',100,108,'Lith_RockName','Гравелиты'),
('hr-1',108,200,'Lith_RockName','Алевролиты'),
('hr-1',0,5,'Sec_RockName','Глина'),
('hr-1',30,38,'Alt_RockName','Переслаивание'),
('hr-1',120,180,'Min_RockName','Минерализация'),
('hr-1',190,200,'Min_RockName','Минерализация')
select * from @GEODETAIL

В таком виде она не читабельна, поэтому в нормальный вид преобразуется скриптом
select case row_number() over(partition by a.holeid order by a.geolfrom) when 1 then a.holeid end as x_holeid, 
case row_number() over(partition by a.holeid,a.geolfrom order by a.geolfrom) when 1 then a.GEOLFROM end as geol_from,
case row_number() over(partition by a.holeid,a.geolfrom,a.geolto order by a.geolfrom) when 1 then a.GEOLTO end as geol_to,
case row_number() over(partition by a.holeid,a.geolfrom,a.geolto,a.value order by a.geolfrom) when 1 then a.VALUE end as Lith_RockNameee,



geolfrom_sec,geolto_sec,Lith3_RockName,geolfrom_alt,geolto_alt,Alteration,geolfrom_min,geolto_min,Mineralisation from GEODETAILS a 
outer apply (Select * From (Select geolfrom as geolfrom_sec, geolto as geolto_sec, value as 'Lith3_RockName',
                                   row_number() over (order by geolfrom) as rn_sec 
                              From GEODETAILS b 
                             Where a.holeid = b.holeid and b.name = 'Lith3_RockName' 
                               and a.geolto>b.geolfrom and a.geolfrom<b.geolto) Sec
					  full join 
					        (Select geolfrom as geolfrom_alt, geolto as geolto_alt, value as 'Alteration',
                                   row_number() over (order by geolfrom) as rn_alt
                              From GEODETAILS b 
                             Where a.holeid = b.holeid and b.name = 'Alteration' 
                               and a.geolto>b.geolfrom and a.geolfrom<b.geolto) alt
						 on rn_sec = rn_alt
					  full join 
					        (Select geolfrom as geolfrom_min, geolto as geolto_min, value as 'Mineralisation',
                                   row_number() over (order by geolfrom) as rn_min
                              From GEODETAILS b 
                             Where a.holeid = b.holeid and b.name = 'Mineralisation' 
                               and a.geolto>b.geolfrom and a.geolfrom<b.geolto) min on isnull(rn_sec,rn_alt) = rn_min
) others
WHere a.name = 'Lith_RockName'


Получается таблица как на картинке
А вопрос мой в следующем. Можно ли в столбец Lith_RockName по мимо своего значения добавить текст из соседних столбцов?


Кажется у меня кривые руки...

К сообщению приложен файл. Размер - 45Kb
12 июн 18, 11:07    [21485560]     Ответить | Цитировать Сообщить модератору
 Re: Возможно ли столбцы добавить в виде текста в другой столбец  [new]
TaPaK
Member

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

CONCAT ?
12 июн 18, 11:08    [21485561]     Ответить | Цитировать Сообщить модератору
 Re: Возможно ли столбцы добавить в виде текста в другой столбец  [new]
katish444
Member

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

К сообщению приложен файл. Размер - 39Kb
12 июн 18, 11:13    [21485572]     Ответить | Цитировать Сообщить модератору
 Re: Возможно ли столбцы добавить в виде текста в другой столбец  [new]
katish444
Member

Откуда:
Сообщений: 261
TaPaK, я не успела дописать)))
12 июн 18, 11:13    [21485575]     Ответить | Цитировать Сообщить модератору
 Re: Возможно ли столбцы добавить в виде текста в другой столбец  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
katish444
TaPaK, я не успела дописать)))

ответ всё равно не меняется
12 июн 18, 11:14    [21485578]     Ответить | Цитировать Сообщить модератору
 Re: Возможно ли столбцы добавить в виде текста в другой столбец  [new]
katish444
Member

Откуда:
Сообщений: 261
TaPaK, проблема в том, что надо чтобы не просто соседние ячейки слились, а чтобы они совпадали по интервалам
12 июн 18, 11:14    [21485580]     Ответить | Цитировать Сообщить модератору
 Re: Возможно ли столбцы добавить в виде текста в другой столбец  [new]
katish444
Member

Откуда:
Сообщений: 261
TaPaK
katish444
TaPaK, я не успела дописать)))

ответ всё равно не меняется

спасибо, кажется я знаю что я делала не так

:-)
12 июн 18, 11:19    [21485597]     Ответить | Цитировать Сообщить модератору
 Re: Возможно ли столбцы добавить в виде текста в другой столбец  [new]
Kopelly
Member

Откуда: Красноярск
Сообщений: 289
katish444,

select a.holeid, a.GEOLFROM, a.GEOLTO, 
a.VALUE + isnull('('+STUFF((
Select ', '+Cast(b.geolfrom as Varchar(10))+'-'+Cast(b.geolfrom as Varchar(10))+' '+b.value
 From GEODETAILS b 
Where a.holeid = b.holeid and b.name in ('Lith3_RockName','Alteration','Mineralisation' )
Order by b.GEOLFROM
FOR XML PATH(''), TYPE ).value('.','varchar(max)') 
,1,2,'')+')','')
from GEODETAILS a 
WHere a.name = 'Lith_RockName'
13 июн 18, 05:19    [21487176]     Ответить | Цитировать Сообщить модератору
 Re: Возможно ли столбцы добавить в виде текста в другой столбец  [new]
katish444
Member

Откуда:
Сообщений: 261
Kopelly, ого как круто!
спасибо большое. Сейчас буду разбираться что значат эти шайтан-команды
13 июн 18, 07:45    [21487227]     Ответить | Цитировать Сообщить модератору
 Re: Возможно ли столбцы добавить в виде текста в другой столбец  [new]
982183
Member

Откуда: VL
Сообщений: 3353
Может всё же стоит найти периоды с неменяющимися показателями,
и вывести эти периоды в отдельные строки,
чем указывать подпериоды в столбцах значений?
13 июн 18, 08:29    [21487280]     Ответить | Цитировать Сообщить модератору
 Re: Возможно ли столбцы добавить в виде текста в другой столбец  [new]
982183
Member

Откуда: VL
Сообщений: 3353
Вот так:
НачалоКонецLith_RockNameSec_RockNameAlt_RockNameMin_RockName
05ПесчанникГлина
58Песчанник
830Алевролит
3038АлевролитПереслаивание
3850Алевролит
50100Известняк
100108Гравелиты
108120Алевролиты
120180АлевролитыМинерализация
180190Алевролиты
190200АлевролитыМинерализация
13 июн 18, 08:43    [21487293]     Ответить | Цитировать Сообщить модератору
 Re: Возможно ли столбцы добавить в виде текста в другой столбец  [new]
982183
Member

Откуда: VL
Сообщений: 3353
А если еще и цветом выделить, то для анализа само то будет.
13 июн 18, 08:44    [21487295]     Ответить | Цитировать Сообщить модератору
 Re: Возможно ли столбцы добавить в виде текста в другой столбец  [new]
Kursist
Member

Откуда:
Сообщений: 2
Очень топорно можно сделать так:

iif(field1 is null,' ', cast((field1) as char(15)) + iif(field2 is null,' ', cast(field2 as char(15))), ... iif(field_n is null,' ' + cast(field_n as char(15))))

только осторожно со значениями типа float
14 июн 18, 13:15    [21490786]     Ответить | Цитировать Сообщить модератору
 Re: Возможно ли столбцы добавить в виде текста в другой столбец  [new]
Kursist
Member

Откуда:
Сообщений: 2
Kursist,

Извините за белиберду - первое сообщение на форуме

iif(field1 is null,Replicate(' ',15), cast(field1 as char(15))) + iif(field2 is null,Replicate(' ',15), cast(field2 as char(15))) + ... + iif(field_n is null,Replicate(' ',15), cast(field_n as char(15)))
14 июн 18, 13:28    [21490853]     Ответить | Цитировать Сообщить модератору
 Re: Возможно ли столбцы добавить в виде текста в другой столбец  [new]
katish444
Member

Откуда:
Сообщений: 261
982183,
а как узнать на каком месте минерализация, например на одном интервале бывает 3-4 разные минерализации, поэтому нужно знать интервал
15 июн 18, 12:35    [21493434]     Ответить | Цитировать Сообщить модератору
 Re: Возможно ли столбцы добавить в виде текста в другой столбец  [new]
katish444
Member

Откуда:
Сообщений: 261
У меня получилось. Большое всем спасибо
15 июн 18, 12:35    [21493439]     Ответить | Цитировать Сообщить модератору
 Re: Возможно ли столбцы добавить в виде текста в другой столбец  [new]
982183
Member

Откуда: VL
Сообщений: 3353
katish444
а как узнать на каком месте минерализация, например на одном интервале бывает 3-4 разные минерализации, поэтому нужно знать интервал

Ну так и надо каждую минерализацию вывести в отдельный интервал и показать её в отдельной строке отчета.
15 июн 18, 13:02    [21493537]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить