Foxtable(狐表)用户栏目专家坐堂 → 如何用SQL语句实现垂直表和水平表的转换灵活操作


  共有2474人关注过本帖树形打印复制链接

主题:如何用SQL语句实现垂直表和水平表的转换灵活操作

帅哥哟,离线,有人找我吗?
lgz518
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1166 积分:7833 威望:0 精华:0 注册:2019/6/13 9:57:00
如何用SQL语句实现垂直表和水平表的转换灵活操作  发帖心情 Post By:2019/12/2 11:49:00 [只看该作者]

如何用SQL语句实现垂直表和水平表的转换灵活操作

1.实例下面还为很代码,不在这里体现;这里SQL把“课程”写死,不利扩展,比如用户再新一个课程,就是改一次。

  
2.对上面问题SQL语句实现垂直表和水平表的转换是否有灵活,也就不管用户,增加多少课程,都可以一条语句,不用再修改。那要如何实现 
  代码要怎么改,谢谢





 回到顶部
帅哥哟,离线,有人找我吗?
lgz518
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1166 积分:7833 威望:0 精华:0 注册:2019/6/13 9:57:00
  发帖心情 Post By:2019/12/2 11:50:00 [只看该作者]

垂直表和水平表的转换

在一些场合,可能需要对表的结构进行横竖转换。

示例一

假定表A的结构如下:

图片点击可在新窗口打开查看

希望将其转换为表B,结构为:

图片点击可在新窗口打开查看


 回到顶部
帅哥哟,离线,有人找我吗?
lgz518
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1166 积分:7833 威望:0 精华:0 注册:2019/6/13 9:57:00
  发帖心情 Post By:2019/12/2 11:54:00 [只看该作者]


图片点击可在新窗口打开查看此主题相关图片如下:捕获.png
图片点击可在新窗口打开查看

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:109720 积分:558310 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/12/2 12:01:00 [只看该作者]

没有其他办法,只能写死。或者根据课程的动态合成需要的sql

 回到顶部
帅哥哟,离线,有人找我吗?
lgz518
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1166 积分:7833 威望:0 精华:0 注册:2019/6/13 9:57:00
  发帖心情 Post By:2019/12/2 14:29:00 [只看该作者]

那如何实现根据课程的动态合成需要的sql,谢谢

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:109720 积分:558310 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/12/2 14:45:00 [只看该作者]

类似

dim sql as string = "Select 姓名,"
dim arr() as string = {"语文","数学"}
for each s as string in arr
    sql = sql & "Sum(iif(课程 = '" & s & "',分数,0)) As " & s & ","
next
sql = sql.trim(",") & " From {学生成绩} Group by 姓名"

 回到顶部