oracle列行轉換問題,oracle 列行轉換問題

2023-02-10 09:00:08 字數 2457 閱讀 8723

1樓:匿名使用者

使用scott.emp表的例子:

select deptno,

max(decode(r, 1, ename, '')) clerk,

max(decode(r, 2, ename, '')) manager

from (select ename,

deptno,

dense_rank() over(partition by deptno order by job) as r

from scott.emp

where empno in (7782, 7934, 7876, 7566)) a

group by deptno

如果行也是動態的,需要用外連線,保證每行都有資料

2樓:匿名使用者

select pid ,item01=

(case iname when 'item01' then content) ,

item02 =(case iname when 'item02' then content),

item03 =(case iname when 'item03' then content)

from table

3樓:

oracel , db2, sql 解決

1、 select pid, iname, content, row_number() over(partition by iname by pid) rn from table

2、select rn,

case iname when iname='item01' else null end as item01,

case iname when iname='item02' else null end as item02,

case iname when iname='item03' else null end as item03

from

(select pid, iname, content, row_number() over(partition by iname by pid) rn from table) x

3、select rn,

max(case iname when iname='item01' else null end) as item01,

max(case iname when iname='item02' else null end) as item02,

max(case iname when iname='item03' else null end) as item03

from

(select pid, iname, content, row_number() over(partition by iname by pid) rn from table) x

group by rn

4、select pid,content

max(case iname when iname='item01' else null end) as item01,

max(case iname when iname='item02' else null end) as item02,

max(case iname when iname='item03' else null end) as item03

from

(select pid, iname, content, row_number() over(partition by iname by pid) iname_rn from table

row_number() over(partition by iname by pid) content_rn ) x

group by pid,iname_rn,content_rn

這個還有問題。

就是 item03,item04,item05,。。。。不好確定:

如果是程式:

先檢索:

select iname from table group by iname

檢索出來的 iname

然後,在程式中 ,拼出:

max(case iname when iname='item03' else null end) as item03

這樣的sql語句,

max(case iname when iname='item01' else null end) as item01,

max(case iname when iname='item02' else null end) as item02,

max(case iname when iname='item03' else null end) as item03

這一塊sql,應該是動態的。

。。。。。。

以上的,sql,沒有驗證過,不敢保證是正確的,行列轉換比較難,不過,還是應該能解決的。

要慢慢的除錯。。。

Oracle列轉行,行轉列

select 產品名稱,sum case when 季度 第一季度 then 銷售額 else 0 end as 第一季度銷售額,sum case when 季度 第二季度 then 銷售額 else 0 end as 第二季度銷售額,sum case when 季度 第三季度 then 銷售額 e...

什麼是列級約束,oracle的表級約束和列級約束的區別是什麼

列級約束即當表建立或改變時在列定義內指定的約束。該約束只應用於相關的列,是行定義的一部分,只能應用於一列上。對某一個特定的列的約束,包含在列定義中,直接跟在該列的其他定義之後,用空格隔開,不必指定列名。其中在列級完整性約束定義處可以定義如下約束 一 not null 限制列取非空值 二 defaul...

oracle匯出csv檔案時,有一列是0開頭的數字怎麼不讓他

此問題copy 沒有太好的解決方法,除非在0前邊加上其他符號,如都加上a,然後批量刪除。步驟 1 寫出前邊帶a的查詢語句,如 select a id,name from test 2 匯出 3 開啟該檔案,將id列從第二位開始取。函式為 mid a2,2,len a2 1 如圖 4 將c列拖拽,使其...