oracle行轉(zhuǎn)列解決一對多 Oracle逗號分隔列轉(zhuǎn)行實現(xiàn)方法?
Oracle逗號分隔列轉(zhuǎn)行實現(xiàn)方法?在執(zhí)行系統(tǒng)時,我們經(jīng)常會遇到多個信息存儲在由逗號或其他符號分隔的字段中。例如,保存用戶的一對多權限時,權限組字段中會保存多個權限號,用逗號分隔。現(xiàn)在,如果您提供一個
Oracle逗號分隔列轉(zhuǎn)行實現(xiàn)方法?
在執(zhí)行系統(tǒng)時,我們經(jīng)常會遇到多個信息存儲在由逗號或其他符號分隔的字段中。例如,保存用戶的一對多權限時,權限組字段中會保存多個權限號,用逗號分隔。
現(xiàn)在,如果您提供一個權限號并希望檢索所用權限的用戶集,則需要在多個由逗號分隔的權限號中匹配給定的權限號。如果你用like來做,它將是低效和不準確的。因此,我們使用逗號分隔列。目前,這種方法只適用于Oracle數(shù)據(jù)庫。這種方法只需要SQL語句就可以實現(xiàn)列到行的轉(zhuǎn)換。
Oracle列轉(zhuǎn)行,行轉(zhuǎn)列?
在Oracle下,函數(shù)decode可用于處理:
選擇產(chǎn)品名稱,
sum(decode(quarter,“first quarter”,sales,0))第一季度銷售額,
sum(decode(quarter,“second quarter”,sales,0))第二季度銷售額,
sum(decode(quarter,“third quarter”,sales,0))第三季度銷售額,
sum(decode(quarty,“fourth quarty”,sales,0))第四季度的銷售額,
from table name
按產(chǎn)品名稱分組
oracle中怎么把行轉(zhuǎn)變成列,列轉(zhuǎn)變成行?
select to_u2;char(wm_2;Concat(name))from tablename_2;Concat函數(shù)將一列轉(zhuǎn)換為一行,用逗號分隔。最后,它被轉(zhuǎn)換成一個字符串
所有版本的Oracle都可以使用WM_u2;Concat()函數(shù)。示例:從user中選擇WM_uuconcat(name)作為name,但如果是Oracle11g,則在group()函數(shù)中使用listag()。示例:選擇組(按名稱排序)中的listagg(名稱,“,”)作為用戶的名稱uConcat:use listagg:result:
oracle語句中如何把一列的值合并為一個值,用逗號隔開?
從表中選擇sum(column),sum(decode(column,null,1,0))