首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

把一列写成多列?该怎么处理

2012-03-18 
把一列写成多列???模块编号角色编号命令编号ModuleID RoleIDModuleOrderID001 001001001 001002001 001003

把一列写成多列???
模块编号角色编号命令编号
ModuleID RoleIDModuleOrderID
001 001001
001 001002
001 001003
001 001004
001 001005
001 001006
001 001007
001 001008
001 001009
001 001010
001 001011
001 001012
001 001013
转换成:


模块编号角色编号命令编号命令编号命令编号
ModuleID RoleIDModuleOrderIDModuleOrderID1ModuleOrderID2
001 001001 002 003
001 001004 005 006
001 001007 008 009
001 001010 011 012
001 001013



[解决办法]

SQL code
create table tb(ModuleID varchar(3),RoleID varchar(3),ModuleOrderID varchar(3))insert into tb values('001','001','001') insert into tb values('001','001','002') insert into tb values('001','001','003') insert into tb values('001','001','004') insert into tb values('001','001','005') insert into tb values('001','001','006') insert into tb values('001','001','007') insert into tb values('001','001','008') insert into tb values('001','001','009') insert into tb values('001','001','010') insert into tb values('001','001','011') insert into tb values('001','001','012') insert into tb values('001','001','013') goselect ModuleID,RoleID,ModuleOrderID,ModuleOrderID1,ModuleOrderID2 from(  select ModuleID,RoleID,c1,    max(case c2 when 0 then ModuleOrderID else '' end) ModuleOrderID,    max(case c2 when 1 then ModuleOrderID else '' end) ModuleOrderID1,    max(case c2 when 2 then ModuleOrderID else '' end) ModuleOrderID2  from  (    select ModuleID,RoleID,ModuleOrderID,(cast(ModuleOrderID as int)-1)/3 c1,(ModuleOrderID-1)%3 c2 from tb  ) t  group by ModuleID,RoleID,c1) mdrop table tb/*ModuleID RoleID ModuleOrderID ModuleOrderID1 ModuleOrderID2 -------- ------ ------------- -------------- -------------- 001      001    001           002            003001      001    004           005            006001      001    007           008            009001      001    010           011            012001      001    013                          (所影响的行数为 5 行)*/
[解决办法]
SQL code
declare  @T table (ModuleID varchar(3),RoleID varchar(3),ModuleOrderID varchar(3))insert into @T values('001','001'f 

热点排行