當前位置:首頁 » 編程語言 » oracle列轉行SQL

oracle列轉行SQL

發布時間: 2022-10-03 16:25:57

sql 最簡單的列轉行

oracle中列傳行可用wm_concat來實現。
如test表中數據如下:
現要將name列一列顯示成行,可用如下語句:
select wm_concat(name) from test;結果:

② oracle 列轉行

SQL> create table t (a number, b varchar2(10));

表已創建。

SQL> insert into t values(1,'A');

已創建 1 行。

SQL> insert into t values(1,'B');

已創建 1 行。

SQL> insert into t values(2,'A');

已創建 1 行。

SQL> insert into t values(2,'B');

已創建 1 行。

SQL> insert into t values(3,'C');

已創建 1 行。

SQL> insert into t values(3,'F');

已創建 1 行。

SQL> insert into t values(4,'D');

已創建 1 行。

SQL> commit;

提交完成。

SQL> select a,max(decode(c,1,b,null)),
2 max(decode(c,2,b,null)),
3 max(decode(c,3,b,null))
4 from(select a,b,row_number()over(partition by a order by b ) c from t)
5* group by a
SQL> /

A MAX(DECODE MAX(DECODE MAX(DECODE
---------- ---------- ---------- ----------
1 A B
2 A B
3 C F
4 D

SQL>

③ oracle sql語句怎麼實現列轉行

我能想到的就是union了

selectbza,'BZ'b
fromxy_bzrdbap
union
selectfbza,'FBZ'b
fromxy_bzrdbap
union
selectzzwya,'ZZWY'b
fromxy_bzrdbap
...

④ oracle 列轉行

我覺得設計成一張表就夠了,比如table:AB吧然後用游標實現 ,
create or replace procere ptest as
strname varchar2(30);
str varchar2(1000);
strid varchar2(10);
cursor cur is select * from AB;
begin
str:='';
open cur;
loop
fetch cur into strid,strname;
exit when cur%notfound;
str:=str||strname||',';
end loop;
str:=substr(str,1,length(str)-1);
dbms_output.put_line(str);
end;

⑤ oracle的sql語句列轉行

不同人的uuid是不一樣的嗎?


select
(selectzfromtabnameaawherezmc='姓名'andaa.uuid=a.uuid)姓名,
(selectzfromtabnameaawherezmc='年齡'andaa.uuid=a.uuid)年齡,
(selectzfromtabnameaawherezmc='英文名稱'andaa.uuid=a.uuid)英文名稱,
(selectzfromtabnameaawherezmc='性別'andaa.uuid=a.uuid)性別,
(selectzfromtabnameaawherezmc='入職日期'andaa.uuid=a.uuid)入職日期,
(selectzfromtabnameaawherezmc='個人信息'andaa.uuid=a.uuid)個人信息
from(selectdistinctuuidfromtabname)a

⑥ ORACLE列轉行,有如下數據,想要的結果如下(見圖:)

像這樣的轉換,你可以通過oracle中的數據合並UNION ALL語句來實現,SQL如下:
(註:V_DATE欄位應為字元串類型)

select * from (
select I_ID , I_WEBID , COLUMNID , V_DATE || '-1' , DAY1 as num
UNION ALL
select I_ID , I_WEBID , COLUMNID , V_DATE || '-2' , DAY2 as num
UNION ALL
。。。
select I_ID , I_WEBID , COLUMNID , V_DATE || '-31' , DAY31 as num
) t order by i_id , v_date

雖然SQL語句比較長,但這是通過SQL方式實現的唯一方法。
其它的方法就是通過存儲過程+臨時表的方式,或通過軟體來實現。

希望這些對你有幫助!!!

熱點內容
安卓上哪裡下大型游戲 發布:2024-12-23 15:10:58 瀏覽:189
明日之後目前適用於什麼配置 發布:2024-12-23 14:56:09 瀏覽:54
php全形半形 發布:2024-12-23 14:55:17 瀏覽:828
手機上傳助手 發布:2024-12-23 14:55:14 瀏覽:732
什麼樣的主機配置吃雞開全效 發布:2024-12-23 14:55:13 瀏覽:830
安卓我的世界114版本有什麼 發布:2024-12-23 14:42:17 瀏覽:710
vbox源碼 發布:2024-12-23 14:41:32 瀏覽:278
詩經是怎麼存儲 發布:2024-12-23 14:41:29 瀏覽:660
屏蔽視頻廣告腳本 發布:2024-12-23 14:41:24 瀏覽:419
php解析pdf 發布:2024-12-23 14:40:01 瀏覽:818