Sql 在Oracle 10g中透视表
我有一个关于使用以下结构和数据透视表的查询 结构 列名数据类型 EMP_名称VARCHAR230 DT数2,0 现在瓦查尔21 EMP_名称DT存在Sql 在Oracle 10g中透视表,sql,oracle,Sql,Oracle,我有一个关于使用以下结构和数据透视表的查询 结构 列名数据类型 EMP_名称VARCHAR230 DT数2,0 现在瓦查尔21 EMP_名称DT存在 V 1 Y V 2 Y V 3 Y V 4 Y R 1 N R 2 Y R 3 Y R 4 N K 1 Y K 2 Y K 3 Y K 4 N 我想把这张桌子旋转一下,在左边显示姓名,在上面显示日期,在中间显示礼物,更像是一张考勤表。我从网上得到了一个
V 1 Y
V 2 Y
V 3 Y
V 4 Y
R 1 N
R 2 Y
R 3 Y
R 4 N
K 1 Y
K 2 Y
K 3 Y
K 4 N
我想把这张桌子旋转一下,在左边显示姓名,在上面显示日期,在中间显示礼物,更像是一张考勤表。我从网上得到了一个密码,但这对我真的没什么帮助。请帮忙
预期输出::
姓名12345678910112
是的
V n y y n
K y y y
名称的数量可以增加,dt列的数据范围将从1到31
提前谢谢
Vivek这里是解决方案,但您需要事先知道值的数量。 这里的假设是‘Y’大于‘N’ 还要注意,若事实表中缺少某个值,比如某个日期并没有记录,那个么MAX函数将返回null。然后,您应该用NVL子句将其包围起来
Thxx很多@Skoffer。。。先生/女士,你让我开心!!表达敬意!!
select EMP_NAME
,max(a1) as a1
,max(a2) as a2
,max(a3) as a3
...
from (select EMP_NAME
,decode(DT, '1', Present) as a1
,decode(DT, '2', Present) as a2
,decode(DT, '3', Present) as a3
...
from test)
group by EMP_NAME
order by EMP_NAME;