在线等,请大家帮忙,数据查询的问题。
有这样一个表,表表的创建代码如下(结构也就下面这样的):
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查询的结果如下:
IDTitleContentTimePicAuthType
----------------------
1标题1内容12007-07-22 16:04:00 null 管理员91
2标题2内容22007-07-22 16:04:00 null 管理员92
3标题3内容32007-07-22 16:04:00 null 管理员93
4标题4内容42007-07-22 16:04:00 null 管理员94
5标题5内容52007-07-22 16:04:00 null 管理员95
6标题6内容62007-07-22 16:04:00 null 管理员96
想得到如下的结果:
Content91 Content92 Content93 Content94 Content95 Content96
----------------------
内容1内容2内容3内容4内容5内容6
注:列名为Content+原来的Type值
请帮忙,谢谢!
[解决办法]
----创建测试数据
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
*/