有这样一个表,表表的创建代码如下(结构也就下面这样的):
CREATE TABLE [dbo].[Info](
[ID] [int] IDENTITY(1,1) NOT NULL,
[Title] [nvarchar](100) COLLATE Chinese_PRC_CI_AS NULL,
[Content] [nvarchar](max) COLLATE Chinese_PRC_CI_AS NULL,
[Time] [smalldatetime] NULL,
[Pic] [varchar](200) COLLATE Chinese_PRC_CI_AS NULL,
[Auth] [nvarchar](50) COLLATE Chinese_PRC_CI_AS NULL CONSTRAINT [DF_Info_Auth]  DEFAULT (N'管理员'),
[Type] [smallint] NULL,
 CONSTRAINT [PK_News] PRIMARY KEY CLUSTERED 
(
[ID] ASC
)WITH (PAD_INDEX  = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]目前使用select * from Info查询的结果如下:
ID Title Content Time Pic Auth Type
----------------------------------------------------------
1 标题1 内容1 2007-07-22 16:04:00 null 管理员 91
2 标题2 内容2 2007-07-22 16:04:00 null 管理员 92
3 标题3 内容3 2007-07-22 16:04:00 null 管理员 93
4 标题4 内容4 2007-07-22 16:04:00 null 管理员 94
5 标题5 内容5 2007-07-22 16:04:00 null 管理员 95
6 标题6 内容6 2007-07-22 16:04:00 null 管理员 96想得到如下的结果:
Content91 Content92 Content93 Content94 Content95 Content96
----------------------------------------------------------
内容1 内容2 内容3 内容4 内容5 内容6注:列名为Content+原来的Type值
请帮忙,谢谢!

解决方案 »

  1.   

    --试下看,没测试
    declare @sql varchar(8000)
    set @sql=''
    select @sql=@sql+',max(case when Type='+convert(varchar(04),Type)+' then Content end as [Content'+convert(varchar(04),Type)+']'
    from Info
    set @sql=stuff(@sql,1,1,'')
    set @sql='select '+@sql+' from Info'
    exec(@sql)
      

  2.   

    select @sql=@sql+',
    你这开始就有错误的。
    这里我估计要用到那个pivot,但我不会用。
      

  3.   

    行列转换的参考:
    http://community.csdn.net/Expert/topic/5650/5650748.xml?temp=.767666
    http://community.csdn.net/Expert/topic/5650/5650403.xml?temp=.3791162
    很多的!
      

  4.   

    ----创建测试数据
    if object_id('tbTest') is not null
    drop table tbTest
    GO
    CREATE TABLE tbTest([ID] [int] IDENTITY(1,1) NOT NULL,
    [Title] [nvarchar](100) COLLATE Chinese_PRC_CI_AS NULL,
    [Content] [nvarchar](100) COLLATE Chinese_PRC_CI_AS NULL,
    [Time] [smalldatetime] NULL,
    [Pic] [varchar](200) COLLATE Chinese_PRC_CI_AS NULL,
    [Auth] [nvarchar](50) COLLATE Chinese_PRC_CI_AS NULL CONSTRAINT [DF_Info_Auth]  DEFAULT (N'管理员'),
    [Type] [smallint] NULL)
    insert tbTest
    select '标题1','内容1','2007-07-22 16:04:00',null, '管理员',91 union all
    select '标题2','内容2','2007-07-22 16:04:00',null, '管理员',92 union all
    select '标题3','内容3','2007-07-22 16:04:00',null, '管理员',93 union all
    select '标题4','内容4','2007-07-22 16:04:00',null, '管理员',94 union all
    select '标题5','内容5','2007-07-22 16:04:00',null, '管理员',95 union all
    select '标题6','内容6','2007-07-22 16:04:00',null, '管理员',96----查询
    declare @sql varchar(8000)
    set @sql = ''
    select @sql = @sql + ',Conten' + rtrim(Type) + '=max(case Type when ' + rtrim(Type) + ' then Content end)'
    from tbTest group by Type
    set @sql = 'select ' + stuff(@sql,1,1,'') + ' from tbTest '
    EXEC(@sql)----清除测试环境
    drop table tbTest/*结果
    Content91    Content92    Content93    Content94    Content95    Content96
    --------------------------------------------------------------------------
    内容1         内容2       内容3         内容4       内容5        内容6
    */