SQL Сервер: объединить ячейки на основе одного столбца - PullRequest
0 голосов
/ 17 февраля 2020

У меня есть некоторые необработанные данные в промежуточной среде в SQL серверной базе данных. У него нет никаких первичных ключей / уникальных ограничений.

Я пытаюсь очистить данные и перейти из одного формата в другой формат.

Пример, если вы посмотрите на строки 1 и 2, Я хочу, чтобы заголовки "Interior-Tr" и "im" были объединены в "Interior-Trim" и "Описание двух сцепленных строк".

Первые две строки исходных данных должны быть первой строкой ожидаемого результата

Может ли кто-нибудь помочь мне с переходом на требуемый формат (прикреплен один набор образцов данных)?

Текущий формат таблицы

input table data

Выходной формат

output format.

1 Ответ

0 голосов
/ 17 февраля 2020

Это довольно простой пример того, когда использовать опережающие / запаздывающие значения - я предполагаю, что вам удалось импортировать это и сохранить правильный порядок (в будущем я предлагаю добавить номер строки при импорте - я смоделировал на данный момент):

- НАСТРОЙКА -

create table table1 (
      SheetNumber varchar (255) null
    , ID integer null
    , Title varchar(255) null
    , Reasonv varchar(255) null
    , Description varchar (255) null
    , Qty1 integer null
    , UOM varchar(255) null
    , UnitPrice varchar(255) null
    , TotalPrice varchar(255) null
)

insert into table1 values(2,3165257,'Interior-Tr','ReplaceMissing','Descrption Line 1','30','LF','1.17','35.1')
insert into table1 values(2,NULL,'im',NULL,NULL,NULL,NULL,NULL,NULL)
insert into table1 values(2,3165252,'Demo-Dumpst','ReplaceMissing','Descrption Line 1','1','LS','478.26','478.26')
insert into table1 values(2,NULL,'er',NULL,'Descrption Line 2',NULL,NULL,NULL,NULL)
insert into table1 values(2,3165263,'Demo-Structure','ReplaceMissing','Descrption Line 1','1','LS','30','30')
insert into table1 values(2,3165267,'Paint-Inter','ReplaceMissing','Descrption Line 1','2592','SF','1.04','2695.68')
insert into table1 values(2,NULL,'ior',NULL,'Descrption Line 2',NULL,NULL,NULL,NULL)
insert into table1 values(2,NULL,NULL,NULL,'Descrption Line 3',NULL,NULL,NULL,NULL)

- РАМКА РЕШЕНИЯ -

select * from (

    select 
          ID
        , Title as old_title
        , lead(Title) OVER (ORDER BY (SELECT 100)) as lead_title
        , case
            when (ID is null) then title
            else concat(Title, lead(Title) OVER (ORDER BY (SELECT 100)))
            end as combined_title

     from table1) subQuery

where ID is not null
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...