Объединить несколько строк в один - PullRequest
0 голосов
/ 21 мая 2018

Я использую SQL Server 2012. Моя таблица выглядит как

enter image description here

Различные типы посещений могут быть - Завершено, Ударено, Не показывать,Поздно отменен и отменен.Я хочу, чтобы мой вывод был
enter image description here

Спасибо за вашу помощь.

Ответы [ 2 ]

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

Как уже говорилось, не совсем так, как вы должны подходить к этому, группировка такого рода не будет выполняться в SQL.

Однако вы можете немного помочь, сгруппировав данные в XML или JSON.если ваш передний конец может справиться с этим.Посмотрите на следующее:

DECLARE @myTable AS TABLE (Date DATE
                          ,VisitType NVARCHAR(20)
                          ,Count INT
                          )

INSERT  INTO @myTable
VALUES  ('2018-6-3', 'Completed', 9),
        ('2018-6-3', 'Late Cancelled', 1),
        ('2018-6-3', 'No Show', 2),
        ('2018-6-13', 'Completed', 5),
        ('2018-6-13', 'Bumped', 1),
        ('2018-6-13', 'No Show', 3)

SELECT  Date
,       (SELECT VisitType, [Count] FROM @myTable B WHERE B.Date = A.Date FOR XML AUTO ) Result
FROM    @myTable A
GROUP BY DATE

Вы можете поиграть с параметрами xml, чтобы получить точный формат, который вы хотите.Это хорошо задокументировано в Интернете.

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

Попробуйте следующее:

select date,
    'Completed: '+sum(case [Visit Type] when 'Completed' then [Count] else 0 end)
    +' '+char(10)+'Late Cancelled: '+sum(case [Visit Type] when 'Late Cancelled' then [Count] else 0 end)
    +' '+char(10)+'Bumped: '+sum(case [Visit Type] when 'Bumped' then [Count] else 0 end)
    +' '+char(10)+'No Show: '+sum(case [Visit Type] when 'No Show' then [Count] else 0 end)
    +' '+char(10)+'Cancelled: '+sum(case [Visit Type] when 'Cancelled' then [Count] else 0 end)
    as comment
from yourtable
group by date
...