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

,请大家帮忙,数据查询的有关问题

2012-03-05 
在线等,请大家帮忙,数据查询的问题。有这样一个表,表表的创建代码如下(结构也就下面这样的):CREATETABLE[db

在线等,请大家帮忙,数据查询的问题。
有这样一个表,表表的创建代码如下(结构也就下面这样的):
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
*/

热点排行