доступ к SQL-запросу для объединения строк - PullRequest
0 голосов
/ 22 декабря 2011

У меня есть следующие данные в формате csv, которые я экспортировал в формате доступа

House Number | Road name | Postcode
1 | alex road | sw2 4r
2 | alex road | sw2 4r
3 | alex road | sw1 2b
4 | alex road | sw2 4r
5 | alex road | sw2 4r
7 | brit road | bw2 4t
4 | brit road | bw2 4t
6 | brit road | bw2 4t
8 | brit road | bw2 4t
10 | brit road | bw2 4t

Мне нужен SQL-запрос ACCESS, который может сгруппировать все записи по названию дороги, общее количество записей может превышать 20 000

Мне нужен вывод в следующем формате

Road Name | House Number | Postcode
--------------------------------------
alex road | 1,2,3,4,5 |  sw2 4r,sw1 2b
brit road | 7,4,6,8,10 | bw2 4t

Ответы [ 2 ]

1 голос
/ 22 декабря 2011

Как указал один из предыдущих постов на SO, с ADO это проще, здесь есть пример

Пример запроса:

   SELECT d.DeptID, d.Department, 
          ConcatADO("SELECT FName & ' ' & SName, Address FROM Persons 
                     WHERE DeptID=" & [d].[DeptID],", "," : ") AS Who
   FROM Departments AS d INNER JOIN Persons AS p ON d.DeptID = p.DeptID
   GROUP BY d.DeptID, d.Department, 3;

Функция с использованием ADO

Function ConcatADO(strSQL As String, strColDelim, strRowDelim, ParamArray NameList() As Variant)
   Dim rs As New ADODB.Recordset
   Dim strList As String

   On Error GoTo Proc_Err

       If strSQL <> "" Then
           rs.Open strSQL, CurrentProject.Connection
           strList = rs.GetString(, , strColDelim, strRowDelim)
           strList = Mid(strList, 1, Len(strList) - Len(strRowDelim))
       Else
           strList = Join(NameList, strColDelim)
       End If

       ConcatADO = strList

   Exit Function

   Proc_Err:
       ConcatADO = "***" & UCase(Err.Description)
   End Function
0 голосов
/ 22 декабря 2011

потому что в Access нет такой функции, как group_concat.поэтому я импортирую свой файл csv в базу данных phpMyAdmin mysql, используя встроенный инструмент импорта, и использую следующий запрос для группировки их

SELECT  road,pcode, group_concat(house_number) 
FROM mytable
GROUP BY road, pcode

, а затем экспортирую его обратно в csv, используя встроенный инструмент экспорта phpmyadmin.Я не знаю, есть ли лучший способ сделать это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...