sql列轉行函數(shù) Oracle逗號分隔列轉行實現(xiàn)方法?
Oracle逗號分隔列轉行實現(xiàn)方法?在執(zhí)行系統(tǒng)時,我們經常會遇到多個信息存儲在由逗號或其他符號分隔的字段中。例如,保存用戶的一對多權限時,權限組字段中會保存多個權限號,用逗號分隔?,F(xiàn)在,如果您提供一個
Oracle逗號分隔列轉行實現(xiàn)方法?
在執(zhí)行系統(tǒng)時,我們經常會遇到多個信息存儲在由逗號或其他符號分隔的字段中。例如,保存用戶的一對多權限時,權限組字段中會保存多個權限號,用逗號分隔。
現(xiàn)在,如果您提供一個權限號并希望檢索所用權限的用戶集,則需要在多個由逗號分隔的權限號中匹配給定的權限號。如果你用like來做,它將是低效和不準確的。因此,我們使用逗號分隔列。目前,這種方法只適用于Oracle數(shù)據(jù)庫。這種方法只需要SQL語句就可以實現(xiàn)列到行的轉換。
sql怎樣將行的值變?yōu)榱校?/h2>
這是一個Oracle數(shù)據(jù)庫。讓我給你看一下我寫的:
列轉行
在進入業(yè)務范圍時,我們會遇到列轉行的問題。解決方法如下:
temp1表中有以下字段:
a SQL transformation column transfer effect
從temp1 unpivot中選擇a,ZJ,zjname(zjname代表(B,C,D,e,F(xiàn),G,h,I,J) )
行傳輸?shù)搅校?/p>
選擇*from TBNAME
行到列后的數(shù)據(jù):
from TBNAME
按PUD分組
軸用于將列值旋轉到列名(即行到列)。在sqlserver2000中,可以使用聚合函數(shù)和case語句來實現(xiàn)pivot。pivot的一般語法是:pivot(aggregate function(column)for column in(…))as P完整語法:tableSourcepivot(aggregate function(valuecolumn)for pivotcolumn in(<columnuuu List>)unpivot用于將列表轉換為列值(即從列到行)。在SQLServer2000中,可以使用union來實現(xiàn)完整的語法:tablesourceUNPIVOT(valueColumnForPivotuColumnIn(<column)注意:pivot和unpivot是SQLServer2005的語法。如果需要修改數(shù)據(jù)庫兼容級別,請將數(shù)據(jù)庫屬性-> options-> compatibility level更改為90。我會私下把具體的實例地址發(fā)給你