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

Откуда:
Сообщений: 246
Доброго дня!
Условие - в таблица содержит записи графика работы сотрудников по принципу
name          smena      1    2   3   4   5   6
Иванов        день       5    5   В   5   5   5
Иванов        ночь       2    2   В   2   2   2


нужно запросом получить данные по Иванову за день и за ночь -

Name   1d 1n 2d 2n 3d 3n
Иванов 5  2   5  2  В  В




Подскажите правильное направление
3 июл 18, 11:30    [21538707]     Ответить | Цитировать Сообщить модератору
 Re: Сложный запрос  [new]
Ivan Durak
Member

Откуда: Minsk!!!
Сообщений: 3618
case + group by
3 июл 18, 11:45    [21538767]     Ответить | Цитировать Сообщить модератору
 Re: Сложный запрос  [new]
court
Member

Откуда:
Сообщений: 1986
select * from
	(select * from T where smena='день') a
full join 
	(select * from T where smena='ночь') b
on a.Name=b.Name
3 июл 18, 11:50    [21538788]     Ответить | Цитировать Сообщить модератору
 Re: Сложный запрос  [new]
Kopelly
Member

Откуда: Красноярск
Сообщений: 289
declare @t table (
name varchar(10),
smena varchar(10),
[1] varchar(1),
[2] varchar(1),
[3] varchar(1),
[4] varchar(1),
[5] varchar(1),
[6] varchar(1)
) 

insert into @t 
Values
('Иванов','день', '5','5','В','5','5','5'),
('Иванов','ночь', '2','2','В','2','2','2'),
('Петров','день', '5','В','5','5','5','5'),
('Петров','ночь', '2','В','2','2','2','2');


With UnP as (
Select name,Work,N_Day+smena as N_Day_smena From @t
 UNPIVOT (Work for N_Day in ([1],[2],[3],[4],[5],[6])) as u)
Select * 
From UnP
Pivot (max(Work) For N_Day_smena in ([1день],[1ночь],
                                     [2день],[2ночь],
									 [3день],[3ночь],
									 [4день],[4ночь],
									 [5день],[5ночь],
									 [6день],[6ночь])) p 
3 июл 18, 11:55    [21538826]     Ответить | Цитировать Сообщить модератору
 Re: Сложный запрос  [new]
jonybest
Member

Откуда:
Сообщений: 246
court
select * from
	(select * from T where smena='день') a
full join 
	(select * from T where smena='ночь') b
on a.Name=b.Name


Спасибо! Как раз то что я искал
3 июл 18, 12:05    [21538872]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить