zoukankan      html  css  js  c++  java
  • sql查询行转列

    昨天下午碰到一个需求,一个大约30万行的表,其中有很多重复行,在这些行中某些字段值是不重复的。

    比如有ID,NAME,CONTRACT_id,SALES,PRODUCT等,除了PRODUCT字段,其余字段均是一样的,需要去重并合并PRODUCT字段。

    下午头脑发昏,直接写了个O(nm)的vba代码,从16:00开始跑,放到另一台空机器上开始跑,下班的时候看了一下跑了不到1/20,感觉时间浪费在IO上了,当然算法也有很大优化空间,比如排序后再合并。

    回来想了想何不直接导入数据库操作,最简单的用access+VBA就行啊。

    Public Function CombStr(TableName As String, FieldName As String, GroupField As String, GroupValue As String) As String
    ' MsgBox "in module"
        Dim ResultStr As String
        Dim rs As Recordset
            Set rs = CurrentDb.OpenRecordset("select " & FieldName & " from " & TableName & " where " & GroupField & "='" & GroupValue & "'")
            If rs.RecordCount > 0 Then
                Do While Not rs.EOF
                    If InStr(ResultStr, rs.Fields(0).Value) = 0 Then ResultStr = ResultStr & "," & rs.Fields(0).Value
                   
                    rs.MoveNext
                Loop
            End If
            If ResultStr <> "" Then ResultStr = Mid(ResultStr, 2)
            CombStr = ResultStr
    End Function
    
    SELECT IDCombStr("contract","PRODUCT","ID",ID) AS PRODUCTSUM
    FROM contract
    GROUP BY ID;
    

     极速搞定之

     

  • 相关阅读:
    选修课作业专栏
    js字符串和数组方法总结
    转Y-slow23原则(雅虎)
    前端优化总结和技巧(原创)
    阿里dom操作题
    基本的dom操作方法
    html5中的postMessage解决跨域问题
    mark一篇文章--用nodejs搭建一个本地反向代理环境
    html5语义化标签总结二
    转html5语义化标签总结一
  • 原文地址:https://www.cnblogs.com/wangjunyan/p/5317860.html
Copyright © 2011-2022 走看看