Em SQL Aggregate Functions (Office 2007) existem apenas estas GROUP BY
funções agregadas no Access SQL:
Count(), Sum(), Avg(),
First(), Last(), Min(), Max(),
StDev(), StDevP(), Var(), VarP()
Das funções agregadas do PostgreSQL existem (entre outras) também estas funções agregadas no PostgreSQL:
array_agg (expression)
-- input values, including nulls, concatenated into an array
string_agg (expression, delimiter)
-- input values concatenated into a string, separated by delimiter
Como obter o equivalente GROUP BY
a funções agregadas de array ou string no Access? É possível construir funções agregadas do Access SQL? Caso não esteja claro, se eu esses dados
ID col
-----
1 A
1 B
1 C
2 A
3 A
3 B
como posso obter a seguinte agregação?
ID cols
----------
1 A, B, C
2 A
3 A, B
Tenho que recorrer ao VBA? Alguma outra ideia?
Estou usando o Access 2007 - 2010, mas se as coisas forem diferentes em uma versão mais recente, informe-me.
O Access vem com um conjunto de funções de agregação de domínio. Uma visão geral deles pode ser encontrada aqui ou na documentação do MSN aqui . Infelizmente, não há nenhuma função de concatenação de domínio nativo.
Felizmente, Patrick Matthews publicou uma função de concatenação de domínio aqui (e reproduzida abaixo para proteger contra o enfraquecimento do link) que realizará o que você está procurando.
Da documentação do DConcat():
Para o exemplo específico em questão:
Deve retornar estes valores:
Em seguida, repita para cada
ID
valor necessário diferente.