2015-09-10 5 views
-9

Это текущий запрос:T-SQL | SQL-сервер Pivot

SELECT 
    cod.COM_DESC 
    ,count(emp.OBE_Name) colValue 
    ,'Total'[Desc] 
FROM OBP_EMP_MASTER emp 
LEFT JOIN COMMONCODES cod 
    ON emp.OBE_AGENT_DR = cod.COM_SLNO 
WHERE OBE_AGENT_DR IS NOT NULL 
GROUP BY cod.COM_DESC 

UNION ALL 

SELECT 
    cod1.COM_DESC 
    ,count(rep.OBE_Name) colValue 
    ,'Replaced'[Desc] 
FROM OBP_EMP_REPLACE_HISTORY rep 
LEFT JOIN COMMONCODES cod1 
    ON rep.OBE_AGENT_DR = cod1.COM_SLNO 
WHERE OBE_AGENT_DR IS NOT NULL 
GROUP BY cod1.COM_DESC 

РЕЗУЛЬТАТ

enter image description here

DESIRED РЕЗУЛЬТАТ

enter image description here

+1

Поиск условной суммы или условной агрегации. –

+2

Вы также можете проверить использование 'PIVOT';). –

+6

вы должны показать, что пытались и почему это не удалось. Вы не можете ожидать, что кто-то опубликует вам все решение и решит ваши проблемы. – Chris

ответ

0

Try:

select 
    Agent, 
    max(case when `desc` = 'Total' then ColValue else 0 end) Total, 
    max(case when `desc` = 'Replaced' then ColValue else 0 end) Replaced 
from tbl 
group by Agent 

Demosqlfiddle

+1

Я полагаю, что SUM - это то, что хочет OP. (Тот же ответ с образцовыми данными, я знаю, но если OP добавит больше выборочных данных, мы будем знать.) – jarlh

Смежные вопросы