function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
Luis Guilherme Marques LinoLuis Guilherme Marques Lino 

Group By Child Objects


I'm facing some trouble to GROUP BY a SELECT with 2 Child Objects. This is the following SELECT:
 
[SELECT Id AtendId, BI_BR_Adabas__c, BI_BR_Adabas__r.BI_BR_Parceiro__c, BI_BR_Cliente__c, BI_BR_Adabas__r.Modelo_de_Atuacao__c, BI_BR_Adabas__r.BI_BR_Parceiro__r.Name, BI_BR_Adabas__r.BI_BR_Parceiro__r.BI_No_Identificador_fiscal__c, BI_BR_Escopo_de_Produto__c, BI_BR_Adabas__r.BI_BR_Parceiro__r.BI_CAM_Codigo_del_cliente__c, BI_BR_Adabas__r.BI_BR_Parceiro__r.Codigo_Grupo__c, BI_BR_Adabas__r.Name AdabasName FROM BI_BR_Atendimento_Comercial_e_Carteira__c WHERE BI_BR_Cliente__c = :lCliente AND BI_BR_Adabas__r.BI_BR_Parceiro__c != null AND BI_BR_Excluir__c = false AND BI_BR_Adabas__r.Modelo_de_Atuacao__c = :lMod GROUP BY BI_BR_Adabas__c, BI_BR_Cliente__c]



The BI_BR_Atendimento_Comercial_e_Carteira__c Object repeats N times for the same BI_BR_Adabas__c for each BI_BR_Cliente__c and as I only need one record (all data will repeat N times because they are the same datas in multiple records)

To achieve this I'm trying to GROUP BY EACH Adabas on EACH Account(BI_BR_Cliente__c).

I'm getting the following error:
 
​Line: 1, Column: 14 Field must be grouped or aggregated: Id

 
Best Answer chosen by Luis Guilherme Marques Lino
Luis Guilherme Marques LinoLuis Guilherme Marques Lino
I solved the problem by removing the Id from the query and grouping by every fields as following:
 
[SELECT BI_BR_Adabas__c, BI_BR_Adabas__r.BI_BR_Parceiro__c, BI_BR_Cliente__c, BI_BR_Adabas__r.Modelo_de_Atuacao__c, BI_BR_Adabas__r.BI_BR_Parceiro__r.Name, BI_BR_Adabas__r.BI_BR_Parceiro__r.BI_No_Identificador_fiscal__c, BI_BR_Escopo_de_Produto__c, BI_BR_Adabas__r.BI_BR_Parceiro__r.BI_CAM_Codigo_del_cliente__c, BI_BR_Adabas__r.BI_BR_Parceiro__r.Codigo_Grupo__c, BI_BR_Adabas__r.Name AdabasName FROM BI_BR_Atendimento_Comercial_e_Carteira__c WHERE BI_BR_Cliente__c = :lCliente AND BI_BR_Adabas__r.BI_BR_Parceiro__c != null AND BI_BR_Excluir__c = false AND BI_BR_Adabas__r.Modelo_de_Atuacao__c = :lMod GROUP BY BI_BR_Adabas__c, BI_BR_Adabas__r.BI_BR_Parceiro__c, BI_BR_Cliente__c, BI_BR_Adabas__r.Modelo_de_Atuacao__c, BI_BR_Adabas__r.BI_BR_Parceiro__r.Name, BI_BR_Adabas__r.BI_BR_Parceiro__r.BI_No_Identificador_fiscal__c, BI_BR_Escopo_de_Produto__c, BI_BR_Adabas__r.BI_BR_Parceiro__r.BI_CAM_Codigo_del_cliente__c, BI_BR_Adabas__r.BI_BR_Parceiro__r.Codigo_Grupo__c, BI_BR_Adabas__r.Name ]

 

All Answers

GauravGargGauravGarg
Hi Luis,

You didn't add any field with aggregate function like count, sum, min, or max. Example below
SELECT Name, Count(Type) FROM Account Group By name


Thanks,​

Gaurav
 

Luis Guilherme Marques LinoLuis Guilherme Marques Lino
I don't need of anything like that.
Here's an example of the scenario that I have and the one I want:

Actual:
BI_BR_Atendimento_Comercial_e_Carteira__c  Id 1
                BI_BR_Adabas__c Id1
                BI_BR_Cliente__c  Id 1
 
BI_BR_Atendimento_Comercial_e_Carteira__c  Id 2
                BI_BR_Adabas__c Id 1
                BI_BR_Cliente__c  Id 1
 
BI_BR_Atendimento_Comercial_e_Carteira__c  Id 3
                BI_BR_Adabas__c Id 1
                BI_BR_Cliente__c  Id 1

Scenario Expected:
BI_BR_Atendimento_Comercial_e_Carteira__c  (Whatever)
                BI_BR_Adabas__c Id 1
                BI_BR_Cliente__c  Id 1

 
Luis Guilherme Marques LinoLuis Guilherme Marques Lino
I solved the problem by removing the Id from the query and grouping by every fields as following:
 
[SELECT BI_BR_Adabas__c, BI_BR_Adabas__r.BI_BR_Parceiro__c, BI_BR_Cliente__c, BI_BR_Adabas__r.Modelo_de_Atuacao__c, BI_BR_Adabas__r.BI_BR_Parceiro__r.Name, BI_BR_Adabas__r.BI_BR_Parceiro__r.BI_No_Identificador_fiscal__c, BI_BR_Escopo_de_Produto__c, BI_BR_Adabas__r.BI_BR_Parceiro__r.BI_CAM_Codigo_del_cliente__c, BI_BR_Adabas__r.BI_BR_Parceiro__r.Codigo_Grupo__c, BI_BR_Adabas__r.Name AdabasName FROM BI_BR_Atendimento_Comercial_e_Carteira__c WHERE BI_BR_Cliente__c = :lCliente AND BI_BR_Adabas__r.BI_BR_Parceiro__c != null AND BI_BR_Excluir__c = false AND BI_BR_Adabas__r.Modelo_de_Atuacao__c = :lMod GROUP BY BI_BR_Adabas__c, BI_BR_Adabas__r.BI_BR_Parceiro__c, BI_BR_Cliente__c, BI_BR_Adabas__r.Modelo_de_Atuacao__c, BI_BR_Adabas__r.BI_BR_Parceiro__r.Name, BI_BR_Adabas__r.BI_BR_Parceiro__r.BI_No_Identificador_fiscal__c, BI_BR_Escopo_de_Produto__c, BI_BR_Adabas__r.BI_BR_Parceiro__r.BI_CAM_Codigo_del_cliente__c, BI_BR_Adabas__r.BI_BR_Parceiro__r.Codigo_Grupo__c, BI_BR_Adabas__r.Name ]

 
This was selected as the best answer