unpivot用法 oracle Oracle列轉(zhuǎn)行,行轉(zhuǎn)列?
Oracle列轉(zhuǎn)行,行轉(zhuǎn)列?在Oracle下,函數(shù)decode可用于處理:選擇產(chǎn)品名稱,sum(decode(quarter,“first quarter”,sales,0))第一季度銷售額,sum(
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))第四季度的銷售額,
來(lái)自表名
按產(chǎn)品名分組
在執(zhí)行系統(tǒng)時(shí),我們經(jīng)常會(huì)遇到多個(gè)信息存儲(chǔ)在一個(gè)用逗號(hào)或其他符號(hào)分隔的字段中。例如,保存用戶的一對(duì)多權(quán)限時(shí),權(quán)限組字段中會(huì)保存多個(gè)權(quán)限號(hào),用逗號(hào)分隔。
現(xiàn)在,如果您提供一個(gè)權(quán)限號(hào)并希望檢索所用權(quán)限的用戶集,則需要在多個(gè)由逗號(hào)分隔的權(quán)限號(hào)中匹配給定的權(quán)限號(hào)。如果你用like來(lái)做,它將是低效和不準(zhǔn)確的。因此,我們使用逗號(hào)分隔列。目前,這種方法只適用于Oracle數(shù)據(jù)庫(kù)。這種方法只需要SQL語(yǔ)句就可以實(shí)現(xiàn)列到行的轉(zhuǎn)換。
Oracle逗號(hào)分隔列轉(zhuǎn)行實(shí)現(xiàn)方法?
這是一個(gè)Oracle數(shù)據(jù)庫(kù)。讓我給你看一下我寫的:
列轉(zhuǎn)行
在進(jìn)入業(yè)務(wù)范圍時(shí),我們會(huì)遇到列轉(zhuǎn)行的問(wèn)題。解決方法如下:
temp1表中有以下字段:
SQL轉(zhuǎn)換列傳輸效果
從temp1 unpivot中選擇a、ZJ、zjname(zjname代表(B、C、D、e、F、G、h、I、J)中的ZJ)
行傳輸?shù)搅校?/p>
從TBNAME中選擇*按PUD分組
pivot用于旋轉(zhuǎn)列值到列名(即行到列)。在sqlserver2000中,可以使用聚合函數(shù)和case語(yǔ)句來(lái)實(shí)現(xiàn)pivot。pivot的一般語(yǔ)法是:pivot(聚合函數(shù)(column)for column in(…))ASP complete語(yǔ)法:tableSourcepivot(聚合函數(shù)(valuecolumn)for pivotcolumn in(<columnuuu List>)unpivot用于將列表轉(zhuǎn)換為列值(即從列到行)。在SQLServer2000中,可以使用union實(shí)現(xiàn)完整的語(yǔ)法:tableuSourceUnpivot(valueuColumnForPivotuColumnIn<columnuNote:pivot和unpivot是SQLServer2005的語(yǔ)法。如果需要修改數(shù)據(jù)庫(kù)兼容級(jí)別,請(qǐng)將數(shù)據(jù)庫(kù)屬性-> options-> compatibility level更改為90。我會(huì)私下把具體的實(shí)例地址發(fā)給你