以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  数值分布统计只有一列  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=125506)

--  作者:susu312
--  发布时间:2018/9/29 17:01:00
--  数值分布统计只有一列

  Dim b As New GroupTableBuilder("占比统计表",DataTables("person"))
  b.Groups.AddDef(zd(TongJi) , TongJi)
  For Each c As String In cs.split(",")
         Dim val As Integer = zd2(c)
         If val = 50 Then
              b.Totals.AddExp("人数_60以下"," Case When  age < 60 Then 1 Else 0 End ",AggregateEnum.Count)
         Else If val = 90
              b.Totals.AddExp("人数_90以上"," Case When  age >= 90 Then 1 Else 0 End ")
              MessageBox.Show("yy")
         Else
              b.Totals.AddExp("人数_& c &", " Case When  age >=val And  age < val+10  Then 1 Else 0 End ")
              MessageBox.Show("zz")
        End If
  Next
  t=b.build()
数值分布统计只有一列


--  作者:有点蓝
--  发布时间:2018/9/29 17:07:00
--  
最基本的表达式用法咯

b.Totals.AddExp("人数_& c &", " Case When  age >=" & 
val & " And  age < " & val+10 & "  Then 1 Else 0 End ",AggregateEnum.Count)
--  作者:susu312
--  发布时间:2018/9/29 17:15:00
--  
以下是引用有点蓝在2018/9/29 17:07:00的发言:
最基本的表达式用法咯

b.Totals.AddExp("人数_& c &", " Case When  age >=" & 
val & " And  age < " & val+10 & "  Then 1 Else 0 End ",AggregateEnum.Count)

  Dim b As New GroupTableBuilder("占比统计表",DataTables("person"))
  b.Groups.AddDef(zd(TongJi) , TongJi)
  For Each c As String In cs.split(",")
         Dim val As Integer = zd2(c)
         If val = 50 Then
              b.Totals.AddExp("人数_60以下"," Case When  age < 60 Then 1 Else 0 End ",AggregateEnum.Count)
         Else If val = 90
              b.Totals.AddExp("人数_90以上"," Case When  age >= 90 Then 1 Else 0 End ")
              MessageBox.Show("yy")
         Else
              b.Totals.AddExp("人数_& c &", " Case When  age >=val And  age < val+10  Then 1 Else 0 End ")
              MessageBox.Show("zz")
        End If
  Next
  t=b.build()

 

还是只有一列,只有年龄列,没有生成统计列,红色代码我改过了,还是这样的

[此贴子已经被作者于2018/9/29 17:17:40编辑过]

--  作者:有点蓝
--  发布时间:2018/9/29 17:17:00
--  
去掉AggregateEnum.Count

b.Totals.AddExp("人数_" & c, " Case When  age >=" & val & " And  age < " & val+10 & "  Then 1 Else 0 End ")

--  作者:susu312
--  发布时间:2018/9/29 17:20:00
--  
以下是引用有点蓝在2018/9/29 17:17:00的发言:
去掉AggregateEnum.Count

b.Totals.AddExp("人数_" & c, " Case When  age >=" & val & " And  age < " & val+10 & "  Then 1 Else 0 End ")

还是一列,我之前是没有count,也是一列,加上count也是一列,


--  作者:有点蓝
--  发布时间:2018/9/29 17:23:00
--  
改后的代码?或者上传实例说明
--  作者:susu312
--  发布时间:2018/9/29 17:26:00
--  
以下是引用有点蓝在2018/9/29 17:17:00的发言:
去掉AggregateEnum.Count

b.Totals.AddExp("人数_" & c, " Case When  age >=" & val & " And  age < " & val+10 & "  Then 1 Else 0 End ")


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

 

 

应该是后台统计,我改过来后 又报这个错误,实在不知道咋回事


--  作者:有点蓝
--  发布时间:2018/9/29 17:34:00
--  
改后的代码?或者上传实例说明
--  作者:susu312
--  发布时间:2018/9/29 17:36:00
--  
以下是引用有点蓝在2018/9/29 17:34:00的发言:
改后的代码?或者上传实例说明

 Dim b As New  SQLGroupTableBuilder("占比统计表1","person")
  b.Groups.AddDef(zd(TongJi) , TongJi)
  For Each c As String In cs.split(",")
         Dim val As Integer = zd2(c)
         If val = 50 Then
              b.Totals.AddExp("人数_60以下"," Case When  age < 60 Then 1 Else 0 End ")
         Else If val = 90
              b.Totals.AddExp("人数_90以上"," Case When  age >= 90 Then 1 Else 0 End ")
         Else
              b.Totals.AddExp("人数_& c &", " Case When  age >=" & val & " And  age < " & val+10 & "  Then 1 Else 0 End ")
        End If
  Next
  t=b.build()


--  作者:有点酸
--  发布时间:2018/9/29 21:27:00
--  
改为这样看看:

Dim b As New  SQLGroupTableBuilder("占比统计表1","person")
b.Groups.AddDef(zd(TongJi) , TongJi)
b.Totals.AddExp("人数_60以下"," Case When  age < 60 Then 1 Else 0 End ")
b.Totals.AddExp("人数_90以上"," Case When  age >= 90 Then 1 Else 0 End ")
For Each c As String In cs.split(",")
    Dim val As Integer = zd2(c)
    If val = 50 OrElse val = 90 Then
    Else
        MessageBox.show(c)
        b.Totals.AddExp("人数_& c &", " Case When  age >=" & val & " And  age < " & val+10 & "  Then 1 Else 0 End ")
    End If
Next
t = b.build()

如果不行,只能上传例子和数据库进行测试