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

Откуда:
Сообщений: 22
Добрый день!
Имеется связанные таблицы.
Table_Pribor
id_Pribor
pr_name
pr_adress

Table_PriborInfo
id_PriborInfo
kod_idPribor
ParamCode
ParamValue

Таблицы связаны (один-ко-многим)

В первой таблице есть прибор и его адрес, во второй таблице хранится одна запись это его тип и значение, вторая его номер и значение.

Нужно все вывести в одну строку
Name, Adress, Тип (Значение), Номер (Значение)

Сейчас у меня все записи идут в две строки
Name, Adress, Тип, Значение
Name, Adress, Номер, Значение


Делаю запрос вот такой запрос
SELECT        Pribor.Name, Pribor.Adress, PriborInfo.ParamCode, PriborInfo.PriborValue
FROM            Pribor INNER JOIN
                         PriborInfo ON Pribor.id_Pribor = PriborInfo.kod_idPribor


Подскажите как исправить?
8 июн 21, 09:25    [22332671]     Ответить | Цитировать Сообщить модератору
 Re: sql (две записи одной таблицы вывести как значения столбцов)  [new]
court
Member

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

FROM            Pribor 
left JOIN
                         PriborInfo ON Pribor.id_Pribor = PriborInfo.kod_idPribor and ParamCode='Тип'
left JOIN
                         PriborInfo ON Pribor.id_Pribor = PriborInfo.kod_idPribor and ParamCode='Номер'

или PIVOT
8 июн 21, 09:52    [22332681]     Ответить | Цитировать Сообщить модератору
 Re: sql (две записи одной таблицы вывести как значения столбцов)  [new]
ol_chig
Member

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

Можно через STUFF
8 июн 21, 14:41    [22332904]     Ответить | Цитировать Сообщить модератору
 Re: sql (две записи одной таблицы вывести как значения столбцов)  [new]
ol_chig
Member

Откуда:
Сообщений: 22
ol_chig
yMHukyM,

Можно через STUFF


дополню примером
-- через stuff
-- пример 3х строк
declare @string1 varchar(100) = 'Name1,Name2',
		@string2 varchar(100) = 'name1:Тип1,name2:Тип2',
		@string3 varchar(100) = 'name1:Значение1,name2:Значение2'

select value
from string_split(@string2, ',')

-- объединение
select 
a.value,
substring(stuff((select concat( '', value) from string_split(@string2, ',') b where b.value like a.value + '%' for xml path('')),1,0, ''), 7, 20),
substring(stuff((select concat( '', value) from string_split(@string3, ',') c where c.value like a.value + '%' for xml path('')),1,0, ''), 7, 20)
from string_split(@string1, ',') a
8 июн 21, 14:55    [22332919]     Ответить | Цитировать Сообщить модератору
 Re: sql (две записи одной таблицы вывести как значения столбцов)  [new]
aleks222
Member

Откуда:
Сообщений: 1416
ol_chig
ol_chig
yMHukyM,

Можно через STUFF


дополню примером
-- через stuff
-- пример 3х строк
declare @string1 varchar(100) = 'Name1,Name2',
		@string2 varchar(100) = 'name1:Тип1,name2:Тип2',
		@string3 varchar(100) = 'name1:Значение1,name2:Значение2'

select value
from string_split(@string2, ',')

-- объединение
select 
a.value,
substring(stuff((select concat( '', value) from string_split(@string2, ',') b where b.value like a.value + '%' for xml path('')),1,0, ''), 7, 20),
substring(stuff((select concat( '', value) from string_split(@string3, ',') c where c.value like a.value + '%' for xml path('')),1,0, ''), 7, 20)
from string_split(@string1, ',') a


- Батька может. Но бык лучше.

ЗЫ. Забивание гвоздей компутером - это высокое искусство.
8 июн 21, 15:05    [22332929]     Ответить | Цитировать Сообщить модератору
 Re: sql (две записи одной таблицы вывести как значения столбцов)  [new]
ol_chig
Member

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

я ждал)
8 июн 21, 15:08    [22332933]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить