原表名字:test
成都創(chuàng)新互聯(lián)服務(wù)項(xiàng)目包括壽光網(wǎng)站建設(shè)、壽光網(wǎng)站制作、壽光網(wǎng)頁(yè)制作以及壽光網(wǎng)絡(luò)營(yíng)銷(xiāo)策劃等。多年來(lái),我們專(zhuān)注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢(shì)、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,壽光網(wǎng)站推廣取得了明顯的社會(huì)效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到壽光省份的部分城市,未來(lái)相信會(huì)繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!
三個(gè)字段:姓名:nm,選修課:xx,成績(jī):cj
分兩張情況:
一、選修科目數(shù)量確定為2:
兩種寫(xiě)法:
1、普通寫(xiě)法
with?t?as
(select?nm,
'選修'?||?row_number()?over(partition?by?nm?order?by?cj)?xx_tp,
'成績(jī)'?||?row_number()?over(partition?by?nm?order?by?cj)?cj_tp,
xx,
cj
from?test?a)
select?nm?"姓名",
max(decode(xx_tp,?'選修1',?xx,?null))?"選修1",
max(decode(cj_tp,?'成績(jī)1',?cj,?null))?"成績(jī)1",
max(decode(xx_tp,?'選修2',?xx,?null))?"選修2",
max(decode(cj_tp,?'成績(jī)2',?cj,?null))?"成績(jī)2"
from?t
group?by?nm
2、pivot
with?t?as
(select?nm,
'選修'?||?row_number()?over(partition?by?nm?order?by?cj)?xx_tp,
'成績(jī)'?||?row_number()?over(partition?by?nm?order?by?cj)?cj_tp,
xx,
cj
from?test?a)
select?nm?"姓名",?max(xx1)?"選修1",?max(cj1)?"成績(jī)1",?max(xx2)?"選修2",?max(cj2)?"成績(jī)2"
from?(select?*
from?t
pivot(max(xx)
for?xx_tp?in('選修1'?xx1,?'選修2'?xx2)))?a
pivot?(max(cj)?for?cj_tp?in('成績(jī)1'?cj1,?'成績(jī)2'?cj2))
group?by?nm
二、選修科目數(shù)量不確定
首先去?;tid=1609939extra=highlight=%B6%AF%CC%AC%D0%D0%D7%AA%C1%D0page=1 ? 復(fù)制動(dòng)態(tài)行轉(zhuǎn)列的代碼到sql窗口中運(yùn)行,然后執(zhí)行如下代碼:
with?t?as
(select?*
from?table(pivot('select?nm,
''成績(jī)''?||?row_number()?over(partition?by?nm?order?by?cj)?cj_tp,
cj
from?test?a'))),
t1?as
(select?*
from?table(pivot('select?nm,
''選修''?||?row_number()?over(partition?by?nm?order?by?cj)?cj_tp,
xx
from?test?a')))
select?*?from?t,?t1?where?t.nm?=?t1.nm
以上。
select name as 姓名 ,id as 編號(hào) from A
union all
select staff_name as 姓名 ,staff_id as 編號(hào) from B
把CC表的記錄刪掉后用insert就可以了。
insert into cc(xx) select BB from AA union select CC from AA;
方法有如下兩種:
1、利用存儲(chǔ)過(guò)程,先查出所要的數(shù)據(jù),循環(huán)放入一列中:
select 編碼,decode(一級(jí),null,null,一級(jí)||'')||decode(二級(jí),null,null,二級(jí)||'')||decode(三級(jí),null,null,三級(jí)||'')||decode(四級(jí),null,null,四級(jí)||'') from 表名
2、使用wm_concat()方法,如select wm_concat(name) as name from user;
單純的select a||b肯定是錯(cuò)的,你得有個(gè)相同的字段才能進(jìn)行合并啊
所以你得把兩個(gè)表做個(gè)子查詢(xún)加上一個(gè)行號(hào),然后用兩個(gè)行號(hào)做關(guān)聯(lián)才行
oraclegroupby把不同的列用逗號(hào)合并步驟:
1、Oracle10G以前使用WMSYS.WM_CONCAT:wmsys.wm_concat將字段的值用","來(lái)隔開(kāi)。
2、使用sys_connect_by_pathsys_connect_by_path(字段名,2個(gè)字段之間的連接符號(hào)),這里的連接符號(hào)不要使用逗號(hào)。