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列拖拽,使其...