以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- iif函数用Case When语句代替的问题 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=79492) |
-- 作者:myredsun -- 发布时间:2016/1/3 11:11:00 -- iif函数用Case When语句代替的问题 Dim b As New SQLGroupTableBuilder("统计表1","学生成绩") b.Groups.AddDef("科目") b.Totals.AddDef("分数",AggregateEnum.Max,"最高分") b.Totals.AddDef("分数",AggregateEnum.Min,"最低分") b.Totals.AddDef("分数",AggregateEnum.Average,"平均分") b.Totals.AddExp("分布_60以下","iif(分数 < 60,1,0)") b.Totals.AddExp("分布_60-70","iif(分数 >= 60 And 分数 < 70,1,0)") 请问老师:最后那句如何用case when 语句转换。在帮助中我转了几次都不行。有劳了。
|
-- 作者:myredsun -- 发布时间:2016/1/3 20:30:00 -- 示例一 假定有下图所示的成绩表: 我们需要统计每一个科目的成绩分布范围,例如60分以下,60分以上,70分以上等等范围的人数,以及各个科目的最高分、最低分、平均分等: 采用自定义表达式,可以方便地统计出来: Dim b As New SQLGroupTableBuilder("统计表1","学生成绩") SQL Server没有iif函数,需要用Case When语句代替。 请教:如何代替?有劳各位了 |
-- 作者:大红袍 -- 发布时间:2016/1/3 21:16:00 -- 比如
b.Totals.AddExp("分布_60-70","(case when 分数>=60 and 分数<70 then 1 Else 0)") |
-- 作者:myredsun -- 发布时间:2016/1/3 22:57:00 -- Dim b As New SQLGroupTableBuilder("统计表1","成绩表") b.C b.Groups.AddDef("科目") b.Totals.AddDef("分数",AggregateEnum.Max,"最高分") b.Totals.AddDef("分数",AggregateEnum.Min,"最低分") b.Totals.AddDef("分数",AggregateEnum.Average,"平均分") b.Totals.AddExp("分布_60-70","(case when 分数 >= 60 And 分数 < 70 then 1 else 0)") b.build() MainTable = Tables("统计表1") 执行发生错误,先谢了。再有劳各位
|
-- 作者:客人 -- 发布时间:2016/1/3 23:02:00 -- b.Totals.AddExp("分布_60-70","(case when 分数>=60 and 分数<70 then 1 Else 0 end)")_____后面加上end就行了。太谢谢你了! |
-- 作者:大红袍 -- 发布时间:2016/1/3 23:42:00 -- 哦,是的,少写了End |