2014-10-02 82 views
-1

一个新手here..Actually我在甲骨文vw_summary一个表作为的Sql透视和逆透视

Onum | Uacheck | Uadesc | AU11 | AU12 | BD10 | 
---------------------------------------------------------- 
1 | 5.1 | VENDOR | 0 | 0 | 0 | 

2 | 5.2A | CUST | 0 | 0 | 0 | 

,我需要显示的数据: -

Onum | PLant | 5.1 - VENDOR | 5.2A - CUST 
--------------------------------------------------- 

1  | AU11 | 0    | 0 

2  | AU12 | 0    | 0 

3  | BD10 | 0    | 0 

即我需要的列AU11, AU12, BD10到成为我的工厂专栏 的行以及UACHECK || UADESC的每个级联以成为行。

+0

唐'你的意思是5.2A列? – Mihai 2014-10-02 12:06:44

+0

yes..sorry..a打字错误..你可以帮助.. – 2014-10-02 12:08:04

回答

0

试试这个:

WITH T1 AS (SELECT * 
      FROM vw_summary UNPIVOT (plantvalue 
          FOR plant 
          IN (AU11, AU12, BD10))), 
    T2 
     AS (SELECT UACHECK, 
        UADESC, 
        PLANT, 
        PLANTVALUE, 
        ROW_NUMBER() OVER (PARTITION BY UADESC ORDER BY UADESC) 
         AS NUM 
       FROM T1) 
SELECT * 
    FROM t2 PIVOT (MIN (PLANTVALUE) 
      FOR (UADESC, UACHECK) 
      IN (('VENDOR', '5.1') AS "5.1 - VENDOR", 
       ('CUST', '5.2A') AS "5.2A - CUST")); 
+0

我想要硬编码值..我想通过连接uadesc从选择查询中获取值。 uacheck ..bcz我在表中有太多的行.. – 2014-10-02 13:36:46

+0

对不起,但你不能像'pivot xml'那样做动态'pivot',至少在sql – Aramillo 2014-10-02 14:27:00

+0

中我们没有任何pl-sql概念在一些动态获取可能通过变量?加上上面的代码是给我“缺少括号”错误..我检查了所有的括号..其中是我无法找到的错误.. – 2014-10-02 14:34:43