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

Откуда:
Сообщений: 20
Есть 2 таблицы

CLIENT
ID | ID_DOC | FIO | HB

DOCUMENT
ID_DOC | Date | Name

необходимо выгрузить документ в виде 1 строки и всех людей которые к нему прицеплены
нагляднее на скрине

К сообщению приложен файл. Размер - 18Kb
11 июн 19, 16:26    [21906867]     Ответить | Цитировать Сообщить модератору
 Re: Строки в новые столбцы  [new]
undll
Member

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

в RESULT первый столбец ID_DOC
11 июн 19, 16:27    [21906869]     Ответить | Цитировать Сообщить модератору
 Re: Строки в новые столбцы  [new]
TaPaK
Member

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

где ж такое спрашивают?
11 июн 19, 16:28    [21906872]     Ответить | Цитировать Сообщить модератору
 Re: Строки в новые столбцы  [new]
Владислав Колосов
Member

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

для Excel и VBA задача.
11 июн 19, 16:55    [21906904]     Ответить | Цитировать Сообщить модератору
 Re: Строки в новые столбцы  [new]
iiyama
Member

Откуда:
Сообщений: 642
undll,
Если у Вас в Excel-е, то оптимально через PowerQuery
11 июн 19, 16:58    [21906910]     Ответить | Цитировать Сообщить модератору
 Re: Строки в новые столбцы  [new]
undll
Member

Откуда:
Сообщений: 20
понимаю что задача извращенная, но нужно на sql'е
11 июн 19, 16:59    [21906912]     Ответить | Цитировать Сообщить модератору
 Re: Строки в новые столбцы  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36979
undll
понимаю что задача извращенная, но нужно на sql'е
Парсить Excel-файл на sql?
11 июн 19, 17:06    [21906923]     Ответить | Цитировать Сообщить модератору
 Re: Строки в новые столбцы  [new]
iiyama
Member

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


+

declare @client table(id int primary key, id_doc int, FIO nvarchar(50), HB date);
declare @document table(id_doc int primary key, [date] date, [Name] nvarchar(50));

insert into @client values
(1001,2222, N'Иванов Иван Иванович','19850505'),
(1002,2222, N'Петров Иван Иванович','19860606'),
(1003,2222, N'Сидоров Иван Иванович','19870707'),
(1004,3333, N'Тестеров Иван Иванович','19880808');

insert into @document values(2222,'20190101', N'Полис страхования БЛА'),(3333,'20190131',N'ЙЦУКЕН ФЫВАПРО');

;with PData as
(
select D.id_doc, D.date, D.Name, C.Fio, C.HB, ROW_NUMBER() OVER(partition by C.id_doc order by C.HB, C.id) as N 
from @document D join @client C ON D.id_doc=C.id_doc
)

select 
	P.id_doc, P.date, P.Name,
	MAX(CASE WHEN P.N=1 THEN P.FIO ELSE NULL END) AS FIO1,
	MAX(CASE WHEN P.N=1 THEN P.HB ELSE NULL END) AS HB1,
	MAX(CASE WHEN P.N=2 THEN P.FIO ELSE NULL END) AS FIO2,
	MAX(CASE WHEN P.N=2 THEN P.HB ELSE NULL END) AS HB2,
	MAX(CASE WHEN P.N=3 THEN P.FIO ELSE NULL END) AS FIO3,
	MAX(CASE WHEN P.N=3 THEN P.HB ELSE NULL END) AS HB3
from PData P
group by P.id_doc, P.date, P.Name


11 июн 19, 17:37    [21906945]     Ответить | Цитировать Сообщить модератору
 Re: Строки в новые столбцы  [new]
komrad
Member

Откуда:
Сообщений: 5245
undll
понимаю что задача извращенная, но нужно на sql'е

dynamic pivot
[url=]video[/url]
11 июн 19, 17:38    [21906947]     Ответить | Цитировать Сообщить модератору
 Re: Строки в новые столбцы  [new]
iiyama
Member

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

1. Только не надо спрашивать, что делать если клиентов будет 4
2. если Вам надо на sql, то и исходный код было бы неплохо писать на sql, а не делать скриншот. Получили бы ответ гораздо быстрее

Живи долго и процветай (с)
11 июн 19, 17:40    [21906949]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить