以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  请教实例  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=99281)

--  作者:hbhb
--  发布时间:2017/4/16 13:59:00
--  请教实例
大师:见实例,请问如何快速求出表a中,任意两列值之和相等的两列的列名?   结果应为:第四列与第五列?
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目20.rar


--  作者:有点蓝
--  发布时间:2017/4/16 14:36:00
--  
Dim clst As new List(of String)
For Each c As Col In Tables("表A").Cols
    If c.IsNumeric Then clst.Add(c.Name)
Next
If clst.Count > 0 Then
    Dim s1 As String = "select \'{0}\' as 列名, sum({0}) as 合计 from {表A}"
    Dim sql As String
    For Each cn As String In clst
        sql &= CExp(s1,cn) & " union all "
    Next
    sql = "select * from (" & sql.SubString(0,sql.Length - 10) & ") as a order by a.合计"
    Output.Show(sql)
    Dim cmd As new SQLCommand
    cmd.CommandText =  sql
    Dim dt As DataTable = cmd.ExecuteReader
    s1 =dt.DataRows(0)("列名")
    For i As Integer = 1 To dt.DataRows.Count-1
        If dt.DataRows(i-1)("合计") = dt.DataRows(i)("合计") Then
            s1 &= "," & dt.DataRows(i)("列名")
        Else
            Output.Show(s1)
            s1 =dt.DataRows(i)("列名")
        End If
    Next
    Output.Show(s1)
End If


--  作者:hbhb
--  发布时间:2017/4/16 14:52:00
--  
谢谢!SQL语句头疼,能否来个简单的不用sql语句,用字典怎么搞?
--  作者:有点蓝
--  发布时间:2017/4/16 15:10:00
--  
那就只能循环所有列,逐个使用Compute求和,然后在比较求和结果
--  作者:hbhb
--  发布时间:2017/4/16 15:15:00
--  
再请教个附加题 
如何求得表a中的某一列的列名,条件是:此列的记录末位字符有4个以上是数字,且有从1-4的顺序排列。也就是模糊判断求得一张表中哪一列是编号列??
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目21.rar