Sql 将行值转换为列

Sql 将行值转换为列,sql,toad,Sql,Toad,我有一个示例查询,返回: 查询是: SELECT departmentID, departmentMembers, workingHours FROM timeTracker WHERE departmentID = 11111 基本上,我想把departmentMembers列的值转换成新的列,每个工作时间列的值就是这些列的值。请参见第二个屏幕截图了解我想要的内容。 请注意,departmentMembers列在以下屏幕截图中不再存在: 您可以使用条件聚合: select departmen

我有一个示例查询,返回:

查询是:

SELECT departmentID, departmentMembers, workingHours
FROM timeTracker
WHERE departmentID = 11111
基本上,我想把departmentMembers列的值转换成新的列,每个工作时间列的值就是这些列的值。请参见第二个屏幕截图了解我想要的内容。 请注意,departmentMembers列在以下屏幕截图中不再存在:


您可以使用条件聚合:

select departmentID, 
       sum(case when departmentMembers = 'ADMIN_FEE' then workingHours else 0 end) as admin_fee,
       . . .
from timeTracker
where departmentID = 11111
group by departmentID;

这个。用于其余列。

使用透视表转换列

select departmentID, [ADMIN_FEE],[AGT_COMM],[AGT_OVER],[IRPM],[NCB_A],[VIP_FEE] from (SELECT departmentID, departmentMembers, workingHours FROM timeTracker WHERE departmentID = 11111) as SourceTable Pivot (max(workingHours) for departmentMembers IN ([ADMIN_FEE],[AGT_COMM],[AGT_OVER],[IRPM],[NCB_A],[VIP_FEE]) AS PivotTable;

我删除了不兼容的数据库标记。请标记您真正使用的数据库。