Как сделать PIVOT результат выбора, как указано в запросе - PullRequest
0 голосов
/ 12 июля 2020

У меня есть запрос, как указано ниже

SELECT Project
    ,STATUS
    ,count(*) AS [count]
FROM Defect
GROUP BY Project
    ,STATUS
ORDER BY Project

, который вернет таблицу, например

enter image description here

I'm trying to PIVOT this result as below

введите описание изображения здесь

Ответы [ 3 ]

2 голосов
/ 12 июля 2020

Вы можете попробовать следующий способ -

SELECT * FROM   
(
    SELECT Project,STATUS,count(*) AS cnt FROM Defect GROUP BY Project,STATUS
) t 
PIVOT(
    sum(cnt) 
    FOR STATUS IN (
        [Build Assigned], 
        [Build Delivered], 
        [Closed], 
        [Eng. Build Delivered], 
        [New], 
        [Non-Issue], 
        [Open],[Pending])
) AS pivot_table
1 голос
/ 12 июля 2020

будет

with base as
(
SELECT Project
    ,STATUS
    ,count(*) AS [count]
FROM Defect
GROUP BY Project
    ,STATUS
)
select *
from base
pivot (
sum([count])
for base.status in ([Build Delivered],[New],[...],[...])
) as x
order by project
;
0 голосов
/ 12 июля 2020

Вы можете использовать агрегированную функцию sum с выражениями case следующим образом:

select
  project,
  sum(case when status = 'Build Assigned' then count else 0 end) as Build_Assigned,
  sum(case when status = 'Build Delivered' then count else 0 end) as Build_Delivered
from yourTable
group by
  project
...