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


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

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

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


加好友 发短信
等级:七尾狐 帖子:1695 积分:10725 威望:0 精华:0 注册:2009/10/25 16:45:00
sql 生成某列的数据时,不满足条件=0 或 空值,怎么改我的代码?  发帖心情 Post By:2011/12/18 17:28:00 [只看该作者]

sql 生成某列的数据时,不满足条件=0 或 空值,怎么改我的代码?  发帖心情 Post By:2011-12-18 17:27:00 [只看该作者]

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

 

下面面只想有一个 8 ,其他都为空 或 0  ,该怎么该条件? 


图片点击可在新窗口打开查看此主题相关图片如下:未命名sql.jpg
图片点击可在新窗口打开查看

 回到顶部
美女呀,离线,留言给我吧!
yangming
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | 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编辑过]

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


加好友 发短信
等级:七尾狐 帖子:1695 积分:10725 威望:0 精华:0 注册:2009/10/25 16:45:00
  发帖心情 Post By:2011/12/18 18:26:00 [只看该作者]

我是要全部的行,但只有那个最大的数显示在它本来的行的位置. 其他都要求空值或0

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


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

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

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


加好友 发短信
等级:七尾狐 帖子:1695 积分:10725 威望:0 精华:0 注册:2009/10/25 16:45:00
  发帖心情 Post By:2011/12/18 18:34:00 [只看该作者]

yang版不一样的,^_^   我弄出来了:select iif((Select Max(分数) from {数据库} where 科目 = '数学')=分数,分数,"") as 分数 from {数据库}

 回到顶部
美女呀,离线,留言给我吧!
yangming
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | 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 科目 = '数学')


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


加好友 发短信
等级:七尾狐 帖子:1695 积分:10725 威望:0 精华:0 注册:2009/10/25 16:45:00
  发帖心情 Post By:2011/12/18 19:57:00 [只看该作者]

yang版,在sql命令窗口运行以下代码就知道了:    不过科目多了代码就太长了,呵呵 只是学习用的.

 

select 班级,姓名,科目,iif((Select Max(分数) from {数据库} where 科目 = '数学')=分数,分数,"") As 数学,iif((Select Max(分数) from {数据库} where 科目 = '语文') = 分数,分数,"") as 语文,iif((Select Max(分数) from {数据库} where 科目 = '政治')=分数,分数,"") as 政治 from {数据库}  

 

这样做交叉统计就简单多了,只是三个统计列都是空值的行要能不显示出来就好了(当然在foxtable中再处理掉这些空值行也是简单的事).  不知那位高手能否赐教. 我弄了几个小时不得要领啊.

 


图片点击可在新窗口打开查看此主题相关图片如下:未命名sql0.jpg
图片点击可在新窗口打开查看
[此贴子已经被作者于2011-12-18 20:06:18编辑过]

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


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

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

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


加好友 发短信
等级:七尾狐 帖子:1695 积分:10725 威望:0 精华:0 注册:2009/10/25 16:45:00
  发帖心情 Post By:2011/12/18 20:52:00 [只看该作者]

只是学习,没有做什么 ^_^.

 回到顶部
美女呀,离线,留言给我吧!
yangming
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | 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")


 回到顶部
总数 11 1 2 下一页