Quantcast
Channel: SQL.ru: Microsoft SQL Server
Viewing all articles
Browse latest Browse all 7251

Запрос

$
0
0
Всем привет!

Прошу помощи, совсем застрял.....
Тестовый набор данных:
declare @test table ( CustId VarChar(20)
                    , Ship   VarChar(20)
                    , Inn    VarChar(20)
                    , Kpp    VarChar(20)
                    , Xcol   as  Inn + '-' + Kpp)
insert into @test                                -- вхождения                     -- ожидаемый результат
       values ( 'Cust 1',  'Ship 1', '44', '32') --                               New Ship 1
            , ( 'Cust 2',  'Ship 1', '32', '44') --                               New Ship 1
            , ( 'Cust 3',  'Ship 1', '22', '33') -- *Ship 5                       New Ship 1
            , ( 'Cust 4',  'Ship 1', '11', '11') -- *Ship 3                       New Ship 1

            , ( 'Cust 5',  'Ship 2', '13', '13') --                               New Ship 2
            , ( 'Cust 6',  'Ship 2', '33', '13') --                               New Ship 2
            , ( 'Cust 7',  'Ship 2', '72', '12') --                               New Ship 2
            , ( 'Cust 8',  'Ship 2', '99', '10') --                               New Ship 2

            , ( 'Cust 9',  'Ship 3', '11', '11') -- *Ship 1,                      New Ship 1
            , ( 'Cust 10', 'Ship 3', '12', '12') --                               New Ship 1

            , ( 'Cust 11', 'Ship 4', '14', '14') --                               New Ship 3
            , ( 'Cust 12', 'Ship 4', '15', '15') --                               New Ship 3
            , ( 'Cust 13', 'Ship 4', '16', '15') --                               New Ship 3
            , ( 'Cust 14', 'Ship 4', '17', '15') --                               New Ship 3

            , ( 'Cust 14', 'Ship 5', '18', '14') --                               New Ship 1
            , ( 'Cust 15', 'Ship 5', '19', '19') --                               New Ship 1
            , ( 'Cust 16', 'Ship 5', '20', '20') --                               New Ship 1
            , ( 'Cust 17', 'Ship 5', '22', '33') -- *Ship 1                       New Ship 1

            , ( 'Cust 18', 'Ship 6', '22', '22') -- *Ship 7                       New Ship 4
            , ( 'Cust 19', 'Ship 6', '18', '18') --                               New Ship 4

            , ( 'Cust 20', 'Ship 7', '22', '22') -- *Ship 6                       New Ship 4
            , ( 'Cust 21', 'Ship 7', '23', '23') --                               New Ship 4


Мне необходимо собрать новые связи (NewShip) из существующих связей (Ship) по клиентам (CustId), алгоритм таков:
Если у клиентов из разных связей есть совпадение по полю Xcol, то мне нужно соединить эти связи в одну, в противном случае оставить существующую. Пытался сделать через "for xml path('')" во вложенном запросе, но это не то, пните в нужное русло =)

Viewing all articles
Browse latest Browse all 7251

Trending Articles