王小明 email
王小明 address
张亮 tel
张亮 email
张亮 address
我的表是这样的。我怎么办才能合并成这样的
王小明 tel, email, address
张亮 tel, email,address
然后用DATAGRID显示给用户看呢?
这是我看完了你的问题写的结果
--如果表已经存在,删除表
if exists (select * from sysobjects where id = OBJECT_ID('[Score]') and OBJECTPROPERTY(id, 'IsUserTable') = 1) DROP TABLE [Score]
--创建一个表
CREATE TABLE [Score] ( [Name] [varchar] (10) NULL , [Subject] [varchar] (10) NULL , [Score] [int] NULL )
--向表中加入数据
INSERT [Score] ( [Name] , [Subject] , [Score] ) VALUES ( '张三' , '语文' , 80 )
INSERT [Score] ( [Name] , [Subject] , [Score] ) VALUES ( '张三' , '数学' , 90 )
INSERT [Score] ( [Name] , [Subject] , [Score] ) VALUES ( '张三' , '物理' , 85 )
INSERT [Score] ( [Name] , [Subject] , [Score] ) VALUES ( '李四' , '语文' , 85 )
INSERT [Score] ( [Name] , [Subject] , [Score] ) VALUES ( '李四' , '数学' , 92 )
INSERT [Score] ( [Name] , [Subject] , [Score] ) VALUES ( '李四' , '物理' , 82 )
--查看原表中的数据
select * from Score
--创建一个临时表,用于存放临时数据
Create Table #Score (姓名 Varchar(10),语文 int ,数学 int,物理 int)
--向表中插入姓名数据
insert into #Score(姓名) Select Distinct Name from Score
--更新语文数据
update #Score set #Score.语文=(select Score From Score where Score.Name=#score.姓名 and Score.Subject='语文')
--更新数学数据
update #Score set #Score.数学=(select Score From Score where Score.Name=#score.姓名 and Score.Subject='数学')
--更新物理数据
update #Score set #Score.物理=(select Score From Score where Score.Name=#score.姓名 and Score.Subject='物理')
--显示所得到的结果
Select * From #Score
--删除临时表
Drop Table #Score
你看一下是否符合你的要求,如果想要得到更好的结果,那就要用游标了,你先好好看一下吧.
如果这样做,那个问题实现起来更简单
--如果表已经存在,删除表
if exists (select * from sysobjects where id = OBJECT_ID('[Score]') and OBJECTPROPERTY(id, 'IsUserTable') = 1) DROP TABLE [Score]
--创建一个表
CREATE TABLE [Score] ( [Name] [varchar] (10) NULL , [Subject] [varchar] (10) NULL , [Score] [int] NULL )
--向表中加入数据
INSERT [Score] ( [Name] , [Subject] , [Score] ) VALUES ( '张三' , '语文' , 80 )
INSERT [Score] ( [Name] , [Subject] , [Score] ) VALUES ( '张三' , '数学' , 90 )
INSERT [Score] ( [Name] , [Subject] , [Score] ) VALUES ( '张三' , '物理' , 85 )
INSERT [Score] ( [Name] , [Subject] , [Score] ) VALUES ( '李四' , '语文' , 85 )
INSERT [Score] ( [Name] , [Subject] , [Score] ) VALUES ( '李四' , '数学' , 92 )
INSERT [Score] ( [Name] , [Subject] , [Score] ) VALUES ( '李四' , '物理' , 82 )
-- 查询语句生成所要数据
Select Name as 姓名,
Sum(case Subject when '数学' then Score else 0 end) as '数学',
Sum(case Subject when '语文' then Score else 0 end) as '语文',
Sum(case Subject when '物理' then Score else 0 end) as '物理'
From Score
Group by Name