本帖最后由 NobodyCanHelpMe 于 2012-06-12 23:02:27 编辑

解决方案 »

  1.   

    easy,
    WITH t1 AS (SELECT   '张三' Name, 'A' "LEVEL", 1 Month FROM DUAL
                UNION ALL
                SELECT   '李四', 'B', 2 Month FROM DUAL
                UNION ALL
                SELECT   '王五', 'C', 3 Month FROM DUAL
                UNION ALL
                SELECT   '张三', 'B', 2 Month FROM DUAL
                UNION ALL
                SELECT   '李四', 'B', 1 Month FROM DUAL
                UNION ALL
                SELECT   '王五', 'C', 1 Month FROM DUAL
                UNION ALL
                SELECT   '张三', 'B', 3 Month FROM DUAL
                UNION ALL
                SELECT   '李四', 'B', 3 Month FROM DUAL
                UNION ALL
                SELECT   '王五', 'B', 2 Month FROM DUAL)
      SELECT   name,
               wm_concat ("一月份") "一月份",
               wm_concat ("二月份") "二月份",
               wm_concat ("三月份") "三月份"
        FROM   (SELECT   name,
                         DECODE (month, 1, "LEVEL") "一月份",
                         DECODE (month, 2, "LEVEL") "二月份",
                         DECODE (month, 3, "LEVEL") "三月份"
                  FROM   t1)
    GROUP BY   name
      

  2.   

    LS的满足要求   oracle中DECODE 函数应该算最常用的一种 功能也比较强大  一般作为判断 也有比较
      

  3.   

    提供另一种方式
    WITH t1 AS (SELECT   '张三' Name, 'A' "LEVEL", 1 Month FROM DUAL
                UNION ALL
                SELECT   '李四', 'B', 2 Month FROM DUAL
                UNION ALL
                SELECT   '王五', 'C', 3 Month FROM DUAL
                UNION ALL
                SELECT   '张三', 'B', 2 Month FROM DUAL
                UNION ALL
                SELECT   '李四', 'B', 1 Month FROM DUAL
                UNION ALL
                SELECT   '王五', 'C', 1 Month FROM DUAL
                UNION ALL
                SELECT   '张三', 'B', 3 Month FROM DUAL
                UNION ALL
                SELECT   '李四', 'B', 3 Month FROM DUAL
                UNION ALL
                SELECT   '王五', 'B', 2 Month FROM DUAL)
    SELECT   name,
                         Max(DECODE (month, 1, "LEVEL")) "一月份",
                         Max(DECODE (month, 2, "LEVEL")) "二月份",
                         Max(DECODE (month, 3, "LEVEL")) "三月份"
                  FROM   t1 GROUP BY NAME