2016-09-07 1 views
2

Pls смотрите ниже запрос,как преобразовать строки в столбцы с помощью SQL-запроса

select D.emp_id, E.emp_name, A.proj_code, B.proj_name, A.activity_code, C.activity_name, 
CONVERT(CHAR(4), A.effort_date, 100) + CONVERT(CHAR(4), A.effort_date, 120) as Month, A.effort_hours 
from timesheet_activity A left join 
project_master B on A.proj_code = B.proj_code 
left join activity_master C on A.activity_code = C.activity_code 
left join timesheet D on A.timesheet_id = D.timesheet_id 
left join employee_master E on D.emp_id = E.emp_id 
WHERE B.proj_name IN ('Sales Support') and (A.effort_date BETWEEN (SELECT CONVERT(VARCHAR(10), CONVERT(date, '30-06-2014', 105), 23)) AND (SELECT CONVERT(VARCHAR(10), CONVERT(date, '02-07-2014', 105), 23))) 

Результат будет выглядеть следующим образом.

enter image description here

Теперь то, что я хочу показать, как показано ниже.

emp_id emp_name proj_code activity_code activity_name Jun 2014 Jul 2014 
101257 Chris  1001  9001   Test   1.5   1 

Я хочу сделать месяцы в виде столбцов и показать часы работы за то же самое.

Любые предложения будут высоко оценены

+1

Посмотрите на PIVOT, есть тонны образцов в SO и web – vercelli

+1

@SJD, используйте опорный стержень –

ответ

1

WITH ABC AS ( paste your query to get that result here ) Select * FROM ABC PIVOT (MAX(effort_hours) for Month in ([Jun 2014],[Jul 2014])) as MaxHrs

Вы можете изменить функцию MAX к любой математической функции вы хотите для выбора условию