2014-07-25 65 views
0

我有一個關於具有下列結構和數據樞轉一個表的查詢Oracle 10g中樞轉的表

結構

列名數據類型
EMP_NAME VARCHAR2(30)

DT NUMBER( 2,0)

PRESENT VARCHAR2(1)

EMP_NAME DT PRESENT

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 

我想旋轉此表以顯示左側的名稱,頂部的日期和現在的中心(更像出席表)。我從互聯網上得到了一個代碼,但這個功能真的幫助我。請幫助..

期望輸出::

名稱1 2 3 4 5 6 7 8 9 10 11 12 .......

řyyny ......

V nyyn ......

ķYYYY ....

名稱的數目可以生長和dt的列中的數據範圍將是從1-31。

在此先感謝

維韋克

回答

0

這裏是解決方案,但你需要知道值的數量事前。 這裏的假設是'Y'>'N'。

另外請注意,如果實際上表中有些值缺失,就像沒有某個日期的記錄那麼MAX函數將返回null。然後您應該用NVL條款將其包圍。

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; 
+0

Thxx很多@Skoffer ... U讓我的一天先生/女士!帽子關! – Vivek