Sql 如何将行数据显示为列
我想将行值显示为列值。并在表的末尾显示最终的总值 为此,我使用以下数据集 我想在列侧设置此数据 我使用这个SQL查询来实现这一点。但我不知道如何得到小时总数列Sql 如何将行数据显示为列,sql,sql-server,Sql,Sql Server,我想将行值显示为列值。并在表的末尾显示最终的总值 为此,我使用以下数据集 我想在列侧设置此数据 我使用这个SQL查询来实现这一点。但我不知道如何得到小时总数列 select * from (select EMP_NO,SUM(Hours) total from Employee_Attendence group by EMP_NO) pivot (sum(total) for WAGE_Type in ('Absence',
select *
from
(select EMP_NO,SUM(Hours) total
from Employee_Attendence
group by EMP_NO)
pivot
(sum(total)
for WAGE_Type in ('Absence', 'Normal'))
最终输出应显示如下
Select EMP_NO, Absence, Normal, Total
From
(select *
from
(select EMP_NO, sum(Hours) total
from Employee_Attendence
group by EMP_NO)
pivot
(sum(total)
for WAGE_Type in ('Absence', 'Normal'))
)
一个简单的条件聚合应该可以做到这一点 示例
Select Emp_ID
,Absence = sum(case when Wage_Type ='Absence' then Hours else 0 end)
,Normal = sum(case when Wage_Type ='Normal' then Hours else 0 end)
,Total = sum(Hours)
From YourTable
Group By Emp_ID
结果
Emp_ID Absence Normal Total
4000 8 32 40
编辑-如果您想要一个轴心点
Select Emp_ID
,Absence
,Normal
,Total = Absence + Normal
From YourTable
Pivot (sum( Hours ) for Wage_Type in ([Absence],[Normal] ) ) pvt
谢谢你的帮助,你知道怎样用同样的方法吗Oracle@Neth很抱歉,几十年没有接触过Oracle。@Neth,您应该在Oracle中使用相同的逻辑,但需要使用列别名。类似的方法应该有效:从表组中按Emp\U ID选择Emp\U ID,sum(工资类型为“缺勤”时的情况,然后小时数为0结束)作为缺勤,sum(工资类型为“正常”时的情况,然后小时数为0结束)作为正常,sum(小时数)作为总计