| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 798 人关注过本帖
标题:怎么写SQL语句
只看楼主 加入收藏
23760639
Rank: 1
等 级:新手上路
帖 子:277
专家分:0
注 册:2005-5-13
收藏
 问题点数:0 回复次数:6 
怎么写SQL语句
王小明 tel
王小明 email
王小明 address

张亮 tel
张亮 email
张亮 address
我的表是这样的。我怎么办才能合并成这样的
王小明   tel, email, address
张亮    tel, email,address
然后用DATAGRID显示给用户看呢?
搜索更多相关主题的帖子: SQL 语句 
2006-03-23 11:39
Tailor
Rank: 1
等 级:新手上路
帖 子:152
专家分:0
注 册:2005-6-26
收藏
得分:0 
你写的问题有点太笼统你上面的东西是表呀,还是字段,是一个表呢,还是两个表,表结构又是什么呢?
问题问的不够专业哦。

2006-03-23 14:19
23760639
Rank: 1
等 级:新手上路
帖 子:277
专家分:0
注 册:2005-5-13
收藏
得分:0 
SQL语句问题

1. 行列转换--普通

假设有张学生成绩表(CJ)如下
Name Subject Result
张三 语文 80
张三 数学 90
张三 物理 85
李四 语文 85
李四 数学 92
李四 物理 82

想变成
姓名 语文 数学 物理
张三 80 90 85
李四 85 92 82

我想做成这样的效果。不知道怎么弄,谢谢!

2006-03-24 08:35
Tailor
Rank: 1
等 级:新手上路
帖 子:152
专家分:0
注 册:2005-6-26
收藏
得分:0 
通过建立一个临时表就能完成任务了。

2006-03-24 09:58
Tailor
Rank: 1
等 级:新手上路
帖 子:152
专家分:0
注 册:2005-6-26
收藏
得分:0 

这是我看完了你的问题写的结果

--如果表已经存在,删除表
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


你看一下是否符合你的要求,如果想要得到更好的结果,那就要用游标了,你先好好看一下吧.


2006-03-24 10:26
Tailor
Rank: 1
等 级:新手上路
帖 子:152
专家分:0
注 册:2005-6-26
收藏
得分:0 

如果这样做,那个问题实现起来更简单

--如果表已经存在,删除表
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


2006-03-27 14:14
xupeng
Rank: 1
等 级:新手上路
帖 子:4049
专家分:0
注 册:2006-2-12
收藏
得分:0 
PFPF

反清复明 http://xupeng.
2006-03-29 14:41
快速回复:怎么写SQL语句
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.014278 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved