Sql 在Oracle 10g中透视表

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 我想把这张桌子旋转一下,在左边显示姓名,在上面显示日期,在中间显示礼物,更像是一张考勤表。我从网上得到了一个

我有一个关于使用以下结构和数据透视表的查询

结构

列名数据类型 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
我想把这张桌子旋转一下,在左边显示姓名,在上面显示日期,在中间显示礼物,更像是一张考勤表。我从网上得到了一个密码,但这对我真的没什么帮助。请帮忙

预期输出::

姓名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;