Как мне развернуть этот результат SQL? - PullRequest
0 голосов
/ 22 сентября 2011

Каков наилучший способ PIVOT этого результата SQL?Мне было интересно, можно ли считать (*) как часть сводки вместо необходимости группировать данные до этого?

SELECT 
    e.fullname,
    e.BusinessUnit,  
    COUNT(*) as total  
FROM EmpComplaints e  
WHERE e.BusinessUnit in ('1-Sales', '2-Tech', '3-Marketing')    
GROUP BY e.fullname, e.BusinessUnit
order by e.fullname, e.BusinessUnit

Я в основном сообщаю каждому сотруднику количество отчетов, которые они имеют в каждомиз трех бизнес-единиц: продажи, технологии, маркетинг.и ищет результат, в котором будут перечислены полные имена слева, причем каждое имя будет отображаться один раз, а каждое имя будет иметь столбец («1-Sales», «2-Tech», «3-Marketing») с числомбудет количество (*)

Ответы [ 2 ]

1 голос
/ 22 сентября 2011

Это MS SQL Server? Это может сработать, извините, не работает, поэтому не может подтвердить:

select fullname, 
    sum(case BusinessUnit when '1-Sales' then 1 else 0 end) as Sales,
    sum(case BusinessUnit when '2-Tech' then 1 else 0 end) as Tech,
    sum(case BusinessUnit when '3-Marketing' then 1 else 0 end) as Marketing
FROM EmpComplaints
GROUP BY fullname;
0 голосов
/ 22 сентября 2011

Вот как это сделать в SQL Server 2005/2008:

SELECT
    FullName
    ,[1-Sales]
    ,[2-Tech]
    ,[3-Marketing]
     FROM
(
SELECT 
    e.fullname,
    e.BusinessUnit,
    COUNT(*) AS Total  
FROM EmpComplaints e  
WHERE e.BusinessUnit in ('1-Sales', '2-Tech', '3-Marketing')
GROUP BY e.fullname,e.BusinessUnit    
) AS bu
PIVOT
(
SUM(Total)
FOR BusinessUnit IN ([1-Sales], [2-Tech], [3-Marketing])
) AS pvt
ORDER by fullname
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...