Foxtable(狐表)用户栏目专家坐堂 → sql 生成某列的数据时,不满足条件=0 或 空值,怎么改我的代码?


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

主题:sql 生成某列的数据时,不满足条件=0 或 空值,怎么改我的代码?

美女呀,离线,留言给我吧!
yangming
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:超级版主 帖子:4109 积分:23338 威望:0 精华:21 注册:2008/9/1 20:07:00
  发帖心情 Post By:2011/12/18 18:22:00 [显示全部帖子]

select TOP 1 (Select Max(分数) from {数据库} where 科目 = '数学') as 分数 from {数据库}

我觉得下面的代码更直观一些,呵

select TOP 1 (Select Max(分数) from {数据库} where 科目 = '数学') as 数学最大值 from {数据库}

[此贴子已经被作者于2011-12-18 18:25:14编辑过]

 回到顶部
美女呀,离线,留言给我吧!
yangming
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:超级版主 帖子:4109 积分:23338 威望:0 精华:21 注册:2008/9/1 20:07:00
  发帖心情 Post By:2011/12/18 18:30:00 [显示全部帖子]

那没必要这么做吧,呵呵,只要排序不就行了,呵

 回到顶部
美女呀,离线,留言给我吧!
yangming
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:超级版主 帖子:4109 积分:23338 威望:0 精华:21 注册:2008/9/1 20:07:00
  发帖心情 Post By:2011/12/18 19:27:00 [显示全部帖子]

学习了,呵呵,只是我不太明白,你为何要这样的结果呢,如果是我,我更喜欢下面的代码:

 

Select 班级, 姓名 ,科目 ,分数 From {数据库} where 分数 = (Select Max(分数) from {数据库} where 科目 = '数学')


 回到顶部
美女呀,离线,留言给我吧!
yangming
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:超级版主 帖子:4109 积分:23338 威望:0 精华:21 注册:2008/9/1 20:07:00
  发帖心情 Post By:2011/12/18 20:29:00 [显示全部帖子]

你如果直接将表格的格式改成,科目列都为列名,比如,数学,语文,外语,都做成列,那做交叉统计不是更方便了?

 回到顶部
美女呀,离线,留言给我吧!
yangming
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:超级版主 帖子:4109 积分:23338 威望:0 精华:21 注册:2008/9/1 20:07:00
  发帖心情 Post By:2011/12/18 20:56:00 [显示全部帖子]

以下是引用e-png在2011-12-18 20:52:00的发言:
只是学习,没有做什么 ^_^.

这段代码,可以将表A转化成表B,呵呵

Dim dtb As New DataTableBuilder("B")

dtb.AddDef("姓名", Gettype(String), 32)

For Each v As String In DataTables("A").GetUniqueValues("","课程")

    dtb.AddDef(v, Gettype(Double))

Next

dtb.Build()

For Each v As String In DataTables("A").GetUniqueValues("","姓名")

    Dim dr1 As DataRow = DataTables("B").AddNew()

    dr1("姓名") = v

    For Each dr2 As DataRow In DataTables("A").DataRows

        If dr2("姓名") = v Then

            dr1(dr2("课程")) = dr2("分数")

        End If

    Next

Next

MainTable = Tables("表B")


 回到顶部