Форум программистов, компьютерный форум, киберфорум
Наши страницы
Microsoft SQL Server
Войти
Регистрация
Восстановить пароль
 
Tina_Shir
0 / 0 / 0
Регистрация: 22.11.2012
Сообщений: 14
1

Объединить строки в одну

20.09.2018, 12:49. Просмотров 88. Ответов 1
Метки нет (Все метки)

Не могу решить проблему:
есть журнал учета больничных литов, выборка из нескольких таблиц. Сейчас каждая запись выводится отдельно, но нужно доработать запрос так, что бы если один больничный лист является продолжением другого, то две записи соединить в одну (см. в приложении).
Я попробовала сделать через самообъединение таблицы больничных листов, но при выводе записи дублируются.
Подскажите, как это можно исправить и сделать?
T-SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
SELECT 
case when nw1.IsComeFromOtherLPU = 0 TheN (case when nw1.N_NWDS_MAIN_PE = '' Then nw1.N_NWDS else nw1.N_NWDS_MAIN_PE end) else '' end,--2
case when nw1.IsComeFromOtherLPU = 0 TheN (case when nw1.N_NWDS_MAIN_PE = '' Then '' else nw1.N_NWDS  end) else '' end,--3
case when nw1.IsComeFromOtherLPU = 1 TheN (case when nw1.N_NWDS_MAIN_PE = '' Then nw1.N_NWDS else nw1.N_NWDS_MAIN_PE end) else '' end,--4
case when nw1.IsComeFromOtherLPU = 1 TheN (case when nw1.N_NWDS_MAIN_PE = '' Then '' else nw1.N_NWDS  end) else '' end,--5
nw1.DisabledPersonFIO, --6
nw1.rf_MKABID, --7
m.ADRES, --8
nw1.PlaceEmployment, --9
mkb.NAME,--10
mkb.NAME,--11
nwp.DocCloseNWDS_FIO, --12
nwp.DocCloseNWDS_FIO, --13
nw1.DateOpen, --14
nw2.DateClose,--15
 DATEDIFF(DY, nw1.DateOpen, NW2.DateClose), --16
 case when nw1.IsOutToOtherLPU = 0 TheN 'нет' else 'да' end --17
FROM DBO.hlt_NotWorkDoc nw1
inner join dbo.hlt_NotWorkDoc nw2
on (nw1.DisabledPersonFIO = nw2.DisabledPersonFIO
and nw1.DateClose = nw2.DateOpen )
inner join dbo.hlt_MKAB m
on nw1.rf_MKABID = m.MKABID
inner join dbo.hlt_NotWorkDocPeriod nwp
on nw1.NotWorkDocID = nwp.rf_NotWorkDocID
inner join dbo.hlt_TAP t
on nw1.rf_TAPID = t.TAPID
inner join dbo.oms_MKB mkb
on nw1.rf_MKBID = mkb.MKBID
    where nw1.NotWorkDocID>0 --and 
and nw1.isClose = 1
0
Миниатюры
Объединить строки в одну  
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.09.2018, 12:49
Ответы с готовыми решениями:

Объединить 3 запроса в одну таблицу
здравствуйте . подскажите пожалуйста. как объединить 3 запроса.1 и 3 запрос выдаёт 3 столбиков.2...

Как объединить данные из нескольких строк в одну, через запятую?
У меня есть три таблицы: Фильм: id, название, ... Актер: id, имя, ... Фильм_актер: id, id_filma,...

Объединить строки одной таблицы, сложная задача
Добрый вечер! Имею такую таблицу Dаtetime | Username | Event (in/out) 02.05.2017 17:50:01...

Повторяющиеся строки запроса в одну строку
Есть запрос результатом которого является набор: Name; MAC; PC_serial; Memory Так как бывает...

Как объединить все строки в столбце (M. Access)?
Надо объединить все строки из столбца в одно поле, а как не пойму! Подскажите pleeeese.

1
invm
1891 / 1280 / 383
Регистрация: 02.06.2013
Сообщений: 3,243
20.09.2018, 19:49 2
Если честно, разбираться в вашем запросе желания нет.
Тло, что вы хотите, делается примерно так:
T-SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
declare @t table (id1 int, id2 int, fio varchar(50), diag1 varchar(50), diag2 varchar(50), date1 date, date2 date);
 
insert into @t
values
 (1, null, 'aaa', 'bbb', 'ccc', '20180901', '20180915'),
 (1, 2, 'aaa', 'bbb', 'ccc', '20180916', '20180920'),
 (1, 3, 'aaa', 'bbb', 'ccc', '20180921', '20180930');
 
with t as
(
 select
  id1,
  last_value(id2) over (partition by id1 order by date1 rows between current row and unbounded following) as id2,
  fio, diag1, diag2,
  first_value(date1) over (partition by id1 order by date1) as date1,
  last_value(date2) over (partition by id1 order by date1 rows between current row and unbounded following) as date2,
  row_number() over (partition by id1 order by date1) as rn
 from
  @t
)
select
 id1, id2, fio, diag1, diag2, date1, date2
from
 t
where
 rn = 1;
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.09.2018, 19:49

Перенос двух ячеек из одной строки таблицы, в одну ячейку другой таблицы.
Я объясню по кароче. Если чек бокс = true то две ячеки надо занести и объединить в одну в другой...

Перенос двух ячеек из одной строки таблицы, в одну ячейку другой таблицы.
Можно ли каким-то образом перенести так как показано на рисунках. Нужно при нажатии на клавишу,...

Объединить 2 запроса в 1
Доброго времени суток. Проблема вот в чем: есть 2 запроса, по отдельности работают, а вместе или...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru