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;
    

     极速搞定之

     

  • 相关阅读:
    debug 调试Windows service服务调试
    Windows Service 创建 发布
    SQL Server 触发器
    c# core api 配置redis
    Core Api 搭建Swagger
    c# core api 自定义特性
    本地iis配置;,NET系统本地发布发布 通过配置路由器可以实现公网访问
    c# 线程的几种实现方式
    c# Thread.Sleep();
    2019创建 core api 加配置swagger
  • 原文地址:https://www.cnblogs.com/wangjunyan/p/5317860.html
Copyright © 2011-2022 走看看