Как сводить таблицу SQL Server с несколькими значениями столбцов? - PullRequest
0 голосов
/ 10 октября 2018

Как получить ожидаемый результат с помощью функции SQL PIVOT.Я попытался выполнить следующий запрос, но я получаю только одну запись в столбце NAME.

Пример данных:

    SNO       TYPE     ENTRY            
    1         Name     Andy         
    1         Name     Kevin            
    1         Active   Yes                   
    1         Value    50           
    2         Name     Andy         
    2         Name     Julia            
    2         Active   No           
    2         Value    45

Ожидаемый результат:

   SNO    NAME        ACTIVE    VALUE       
   1    Andy, Kevin    Yes       50          
   2    Andy, Julia    No        45 

Запрос, который я пытался:

            select SNO,Name,Active,Value 
            from 
                (
                select * from tbl1
                ) as PivotData

                Pivot 
                (
                max(ENTRY) for TYPE in([Name],[Active],[Value])
                ) as Pivoting

1 Ответ

0 голосов
/ 10 октября 2018

Предполагая, что ACTIVE и VALUE не имеют нескольких значений.Мы просто исключаем NAME из PIVOT и разрешаем его с помощью стандартного XML STUFF

Пример

Select SNO
      ,Name  = Stuff((Select Distinct ',' +Entry From @YourTable Where SNO=Pvt.SNO and [TYPE]='Name' For XML Path ('')),1,1,'')
      ,Active
      ,Value 
 From   YourTable A
 Pivot ( max(ENTRY) for TYPE in (Active,Value) ) Pvt

Возвращает

SNO Name        Active  Value
1   Andy,Kevin  Yes     50
2   Andy,Julia  No      45
...