Rss & SiteMap
Foxtable(狐表) http://www.foxtable.com
select TOP 1 (Select Max(分数) from {数据库} where 科目 = '数学') as 分数 from {数据库}
我觉得下面的代码更直观一些,呵
select TOP 1 (Select Max(分数) from {数据库} where 科目 = '数学') as 数学最大值 from {数据库}
学习了,呵呵,只是我不太明白,你为何要这样的结果呢,如果是我,我更喜欢下面的代码:
Select 班级, 姓名 ,科目 ,分数 From {数据库} where 分数 = (Select Max(分数) from {数据库} where 科目 = '数学')
yang版,在sql命令窗口运行以下代码就知道了: 不过科目多了代码就太长了,呵呵 只是学习用的.
select 班级,姓名,科目,iif((Select Max(分数) from {数据库} where 科目 = '数学')=分数,分数,"") As 数学,iif((Select Max(分数) from {数据库} where 科目 = '语文') = 分数,分数,"") as 语文,iif((Select Max(分数) from {数据库} where 科目 = '政治')=分数,分数,"") as 政治 from {数据库}
这样做交叉统计就简单多了,只是三个统计列都是空值的行要能不显示出来就好了(当然在foxtable中再处理掉这些空值行也是简单的事). 不知那位高手能否赐教. 我弄了几个小时不得要领啊.
这段代码,可以将表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")