行转列+字符串拼接的问题

fancycgx3650 2010-04-12 10:53:19
昨天发了一个类似的问题,感谢Tony哥的回帖,现在又遇到一点问题,为了多三点分,决定重开一贴
原帖地址 http://topic.csdn.net/u/20100412/01/b56d56ec-7694-4816-b4bd-652d24cacd43.html?913758511

首先有A,B,C三个表如下
表A
pk year
-------------------
1 2008
2 2009
3 2010

表B
pk type score
--------------------
1 1 60
1 1 55
1 2 65
2 1 40
2 1 30
2 2 60

表C
type course
----------
1 语文
2 数学
3 英语
4 物理

现在的问题是这样的,我要在一个网格里显示这些数据
希望显示的格式如下
pk year 语文 数学 英语 物理
---------------------------------
1 2008 60,55 65 0 0
2 2009 40,30 60 0 0
3 2010 0 0 0 0

意思就是:表A的字段作为行显示,表C的字段作为列显示,表B的字段通过pk和type两个外键和表A、C相连,
如果有值,在Grid对应的地方显示,如果有多个值,则当中加,显示

不知道我的意思表达清楚了没有,如果觉得没表达清楚请留言,我在线等,谢谢
...全文
1507 36 打赏 收藏 转发到动态 举报
写回复
用AI写文章
36 条回复
切换为时间正序
请发表友善的回复…
发表回复
ndssss 2010-12-27
  • 打赏
  • 举报
回复
好帖,收藏了,谢谢!
abuying 2010-09-21
  • 打赏
  • 举报
回复
收藏了
pingguoshu_ni 2010-08-31
  • 打赏
  • 举报
回复
----------
fancycgx3650 2010-04-15
  • 打赏
  • 举报
回复
我应该知道是什么问题了,我现在来总结一下吧
关于行转列的,Tony哥已经说得很清楚了,我就不重复了
关于SQL 2005服务器的问题:
我的SQL 2005是Client版本的,本身就不带服务器,之所以在台式机上没有出现“没有服务器”这个问题
我估计是因为我先安装了VS2005的关系,所以可以找到服务器,但是在笔记本上就没那么幸运了
在网上下载一个东西就可以了,具体什么我忘了,不在身边,过两天穿上来
dawugui 2010-04-13
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 fancycgx3650 的回复:]
奇怪了。。。。在台式机上OK的
换到笔记本上就不行了
而且我的笔记本上输入varchar是黑色的,没有变蓝色。。。
[/Quote]
笔记本的sql server被破坏了?
fancycgx3650 2010-04-13
  • 打赏
  • 举报
回复
奇怪了。。。。在台式机上OK的
换到笔记本上就不行了
而且我的笔记本上输入varchar是黑色的,没有变蓝色。。。
tiger_ok1 2010-04-13
  • 打赏
  • 举报
回复
收藏,,,学习。。
凤凰涅檠 2010-04-13
  • 打赏
  • 举报
回复
好文,收下了
燥动的心 2010-04-13
  • 打赏
  • 举报
回复
学习。
--小F-- 2010-04-13
  • 打赏
  • 举报
回复

[Quote=引用 23 楼 dawugui 的回复:]
引用 22 楼 fancycgx3650 的回复:
我忘了SQL2005的实例名是什么了怎么办。。。。

去控制面板\服务\sql server服务看括号里面的内容.
[/Quote]

查看数据库服务器名和实例名
print 'Server Name...............: ' + convert(varchar(30),@@SERVERNAME)
print 'Instance..................: ' + convert(varchar(30),@@SERVICENAME)
htl258_Tony 2010-04-13
  • 打赏
  • 举报
回复
查看sql2005实例名:进入注册表键目录HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\,键名InstalledInstances,它的键值就是已安装的实例名,每个实例名间有个回车换行符。 
fancycgx3650 2010-04-13
  • 打赏
  • 举报
回复
台式机上有的,但是笔记本没有。。
fancycgx3650 2010-04-13
  • 打赏
  • 举报
回复
我这里一个都没有。。。
htl258_Tony 2010-04-13
  • 打赏
  • 举报
回复
开始-->运行-->services.msc-->找到有两个SQL Server服务,看SQL Server(括号内的内容是什么)
fancycgx3650 2010-04-13
  • 打赏
  • 举报
回复
找不到- -
dawugui 2010-04-13
  • 打赏
  • 举报
回复
[Quote=引用 22 楼 fancycgx3650 的回复:]
我忘了SQL2005的实例名是什么了怎么办。。。。
[/Quote]
去控制面板\服务\sql server服务看括号里面的内容.
fancycgx3650 2010-04-13
  • 打赏
  • 举报
回复
我忘了SQL2005的实例名是什么了怎么办。。。。
htl258_Tony 2010-04-13
  • 打赏
  • 举报
回复
如果2000和2005并存,2000安装在前,而且当时选的是默认实例,那么2005在安装时必须要指定一个实例名,这样一来,访问2005数据库引擎时就比较麻烦,格式如下:

比如实例名为:SQL2005

那么在访问时在服务器一栏要输入:IP(或计算机名)\SQL2005
dawugui 2010-04-13
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 fancycgx3650 的回复:]
引用 15 楼 htl258 的回复:
引用 14 楼 fancycgx3650 的回复:
哦,我知道了
我笔记本上还装有SQL SERVER 2000
但是我在SQL SERVER 2005下建立的数据库为什麽还是8.0版本的呢

如果2005连接到2000的实例,建出来的库就是2000的版本。


我现在连接到得服务器就是8.0的,怎么才能练到9.0的?
[/Quote]
你连接的时候,在服务器名称那里输入
机器名\实例名
或者
ip\实例名
不要用默认的'.'这个符号.
fancycgx3650 2010-04-13
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 htl258 的回复:]
引用 14 楼 fancycgx3650 的回复:
哦,我知道了
我笔记本上还装有SQL SERVER 2000
但是我在SQL SERVER 2005下建立的数据库为什麽还是8.0版本的呢

如果2005连接到2000的实例,建出来的库就是2000的版本。
[/Quote]

我现在连接到得服务器就是8.0的,怎么才能练到9.0的?
加载更多回复(16)

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧