读书人

sql 横竖变化

发布时间: 2013-06-19 10:26:41 作者: rapoo

sql 横竖变化 求救

NUMNAMEXY
7 张三11
61 李四12
104王五13
80 赵六21
70 刘七22
70 吴八23

将上面数据排列为

7张三 61李四 104王五
80赵六 70刘七 60吴八


x,y其实可以看成是坐标,排列出表格,谢过各位大神!

下面是建表的代码方便各位
create table [TESTTABLE] (NUM nvarchar(50),NAME varchar(50),X int,Y int)
insert into [TESTTABLE] values('7','张三',1,1)
insert into [TESTTABLE] values('61','李四',1,2)
insert into [TESTTABLE] values('104','王五',1,3)
insert into [TESTTABLE] values('80','赵六',2,1)
insert into [TESTTABLE] values('70','刘七',2,2)
insert into [TESTTABLE] values('70','吴八',2,3)
SQL 横竖变化
[解决办法]

--刚刚发错了

select X,
max(case when Y=1 then NUM+NAME else '' end),
max(case when Y=2 then NUM+NAME else '' end),
max(case when Y=3 then NUM+NAME else '' end)
from [TESTTABLE]
group by X
X
----------- ---------------------------------------------------------------- ---------------------------------------------------------------- ----------------------------------------------------------------
1 7张三 61李四 104王五


2 80赵六 70刘七 70吴八

(2 行受影响)


[解决办法]

create table [TESTTABLE](NUM nvarchar(5),NAME varchar(10),X int,Y int)

insert into [TESTTABLE] values('7','张三',1,1)
insert into [TESTTABLE] values('61','李四',1,2)
insert into [TESTTABLE] values('104','王五',1,3)
insert into [TESTTABLE] values('80','赵六',2,1)
insert into [TESTTABLE] values('70','刘七',2,2)
insert into [TESTTABLE] values('70','吴八',2,3)

select NUM,NAME,X,Y from [TESTTABLE]

/*
NUM NAME X Y
----- ---------- ----------- -----------
7 张三 1 1
61 李四 1 2
104 王五 1 3
80 赵六 2 1
70 刘七 2 2
70 吴八 2 3

(6 row(s) affected)
*/


select [1],[2],[3]
from (select NUM+NAME 'NN',X,Y from [TESTTABLE]) a
pivot(max(NN) for Y in([1],[2],[3])) p

/*
1 2 3
--------------- --------------- ---------------
7张三 61李四 104王五
80赵六 70刘七 70吴八

(2 row(s) affected)


*/

读书人网 >SQL Server

热点推荐