oracle列轉換成行 Oracle逗號分隔列轉行實現(xiàn)方法?
Oracle逗號分隔列轉行實現(xiàn)方法?在執(zhí)行系統(tǒng)時,我們經(jīng)常會遇到多個信息存儲在由逗號或其他符號分隔的字段中。例如,保存用戶的一對多權限時,權限組字段中會保存多個權限號,用逗號分隔?,F(xiàn)在,如果您提供一個
Oracle逗號分隔列轉行實現(xiàn)方法?
在執(zhí)行系統(tǒng)時,我們經(jīng)常會遇到多個信息存儲在由逗號或其他符號分隔的字段中。例如,保存用戶的一對多權限時,權限組字段中會保存多個權限號,用逗號分隔。
現(xiàn)在,如果您提供一個權限號并希望檢索所用權限的用戶集,則需要在多個由逗號分隔的權限號中匹配給定的權限號。如果你用like來做,它將是低效和不準確的。因此,我們使用逗號分隔列。目前,這種方法只適用于Oracle數(shù)據(jù)庫。這種方法只需要SQL語句就可以實現(xiàn)列到行的轉換。
Oracle列轉行,行轉列?
在Oracle下,函數(shù)decode可用于處理:
選擇產(chǎn)品名稱,
sum(decode(quarter,“first quarter”,sales,0))first quarter sales,
sum(decode(quarter,“second quarter”,sales,0))second quarter sales,
sum(decode(quarter,“third quarter”,sales,0)第三季度銷售額,
sum(decode(quarty,“fourth quarty”,Sales volume,0))第四季度銷售額,
from table name
group by product name
sql怎樣將行的值變?yōu)榱校?/h2>
這是Oracle數(shù)據(jù)庫。讓我告訴你我寫了什么:
列到行
當進入業(yè)務范圍時,我們會遇到列到行的問題。解決方法如下:
在temp1中,表的字段內(nèi)容如下:
SQL轉換列的行傳輸效果
從temp1 unpivot中選擇a,ZJ,zjname(B,C,D,e,F(xiàn),G,h,I,J) )
行傳輸列:
選擇*來自TBNAME
行傳輸列后的數(shù)據(jù):
來自TBNAME
按PUD分組