行列轉換 交叉表 (轉)
總結了一些有代表性的貼子,/Expert/topic/2440/2440306.?temp=.6941645">具體見
1: 列轉為行:
eg1:
Create table test (name char(10),km char(10),cj int)
go
insert test values('張三','語文',80)
insert test values('張三','數學',86)
insert test values('張三','英語',75)
insert test values('李四','語文',78)
insert test values('李四','數學',85)
insert test values('李四','英語',78)
想變成
姓名 語文 數學 英語
張三 80 86 75
李四 78 85 78
declare @ varchar(8000)
set @sql = ' name'
select @sql = @sql + ',sum(case km when '''+km+''' then cj end) ['+km+']'
from (select distinct km from test) as a
select @sql = @sql+' from test group by name'
exec(@sql)
drop table test
eg2:
有表A,
id pid
1 1
1 2
1 3
2 1
2 2
3 1
如何化成表B:
id pid
1 1,2,3
2 1,2
3 1
或者是從表B變成A(不要用遊標)
以前有相似的列子,現在找不到了,幫幫忙!
--1.建立一個合併的
create function fmerg(@id int)
returns varchar(8000)
as
begin
declare @str varchar(8000)
set @str=''
select @str=@str+','+cast(pid as varchar) from 表A where id=@id
set @str=right(@str,len(@str)-1)
return(@str)
End
go
--自定義函式得到結果
select distinct id,o.fmerg(id) from 表A
2:
/*********** 行轉列 *****************/
測試:
create table t1 (a int,b int,c int,d int,e int,f int,g int,h int)
insert t1 values(15, 9, 1, 0, 1, 2, 2, 0)
declare @ varchar(8000)
set @=''
select @=@+rtrim(name)+' from t1 union all select ' from sylumns where id=_id('t1')
set @=left(@,len(@)-len(' from t1 union all select '))
--print @
exec('select '+@+' from t1')
a
-----------
15
9
1
0
1
2
2
0
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752019/viewspace-963136/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 行列轉換
- sql 實現表的行列轉換SQL
- Kettle行列轉換
- 偽行列轉換!
- 行列轉換sqlSQL
- oracle行列轉換-多行轉換成字串Oracle字串
- 行列轉換,列行轉換統計
- oracle行列轉換-行轉列Oracle
- oracle行列轉換-列轉行Oracle
- Oracle-行列轉換Oracle
- MySQL行列轉換拼接MySql
- 行列轉換之大全~~~
- sql server 行列轉換SQLServer
- SQL Server 實現行列(縱橫表)轉換SQLServer
- oracle行列轉換-字串轉換成多列Oracle字串
- oracle行列轉換-多列轉換成字串Oracle字串
- 用abap實現內表的行列轉換-原始碼2 (轉)原始碼
- mysql行列轉換詳解MySql
- sql server行列轉換案例SQLServer
- Oracle 行列轉換 經典Oracle
- Oracle 行列轉換總結Oracle
- Oracle 行列轉換小結Oracle
- 【SQL 學習】行列轉換SQL
- 【SQL】行列轉換方法示例SQL
- Oracle行列轉換總結Oracle
- Shell練習 行列轉換
- 複雜的行列轉換
- 記錄一個行列轉換
- 通用的行列轉換的方法
- 行列轉換問題總結
- oracle和mysql的行列轉換OracleMySql
- 行列轉換的一個例子
- WORD及EXCEL行列轉換實現方法收藏(轉)Excel
- 使用sed做特殊的行列轉換
- pivot、unpivot實現oracle行列轉換Oracle
- Oracle--SQL行列轉換實戰OracleSQL
- SQL Server中行列轉換 Pivot UnPivotSQLServer
- 在SQL Server 2005中實現表的行列轉換SQLServer