Нужен запрос SQL Server для агрегирования данных для нескольких строк - PullRequest
0 голосов
/ 23 мая 2018

У меня есть таблица с информацией о клиенте, для которой нужно объединить данные в одну строку.Мой уникальный идентификатор - мой номер клиента.Как я могу этого достичь?Вот мои текущие данные:

        ID  CUST_NUM    CUSTOMER_NAME                       BOUGHT_PRODUCT_A    BOUGHT_PRODUCT_B  BOUGHT_PRODUCT_C  BOUGHT_PRODUCT_D
        1   125654      IHOP                                NULL                NULL              NULL              YES
        2   125654      I.H.O.P.                            YES                 NULL              NO                YES
        3   125654      IHOP INC.                           YES                 NULL              NULL              NULL

И это мой желаемый результат:

        ID  CUST_NUM    CUSTOMER_NAME          BOUGHT_PRODUCT_A    BOUGHT_PRODUCT_B  BOUGHT_PRODUCT_C   BOUGHT_PRODUCT_D
        1   125654      IHOP,I.H.O.P.,IHOP INC. NULL                NULL              NULL              YES

1 Ответ

0 голосов
/ 23 мая 2018

Вы можете использовать окно функция:

select distinct CUST_NUM,
       stuff ((select distinct ',' +CUSTOMER_NAME  
               from table 
               where t.CUST_NUM = CUST_NUM for xml path('')
               ), 1,1, ''
             ) as CUSTOMER_NAME, 
       first_value(BOUGHT_PRODUCT_A) over (partition by CUST_NUM order by ID) BOUGHT_PRODUCT_A,
       first_value(BOUGHT_PRODUCT_B) over (partition by CUST_NUM order by ID) BOUGHT_PRODUCT_B,
       first_value(BOUGHT_PRODUCT_C) over (partition by CUST_NUM order by ID) BOUGHT_PRODUCT_C,
       first_value(BOUGHT_PRODUCT_D) over (partition by CUST_NUM order by ID) BOUGHT_PRODUCT_D
from table t;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...