I am trying to execute a block of code using the Execute Anonymous Window that is meant to delete some duplicated data, but I am getting this weird error about a variable not existing even though my debugging says otherwise.
Here is what I have:
List<AggregateResult> ars = [SELECT YTPQuiz__c quiz FROM YTPQuestion__c GROUP BY YTPQuiz__c HAVING Count(Id) > 1];
System.debug(ars);
for (AggregateResult ar : ars) {
System.debug(ar.quiz);
}
In the for-loop you will see I simply print the quiz
variable I assigned during the SOQL statement, but I get an error saying that this variable does not exist.
If I replace this debug line with System.debug(ar)
the log print out a bunch of object like:
DEBUG|AggregateResult:{quiz=a1XY0000000012}
DEBUG|AggregateResult:{quiz=a1XY0000000013}
DEBUG|AggregateResult:{quiz=a1XY0000000014}
DEBUG|AggregateResult:{quiz=a1XY0000000015}
Yet, I can't access the quiz variable.
If I don't alias YTPQuiz__c as quiz
then it will print out
DEBUG|AggregateResult:{YTPQuiz__c=a1XY0000000012}
DEBUG|AggregateResult:{YTPQuiz__c=a1XY0000000013}
DEBUG|AggregateResult:{YTPQuiz__c=a1XY0000000014}
DEBUG|AggregateResult:{YTPQuiz__c=a1XY0000000015}
Yet, I get the error that ar.YTPQuiz__c
variable doesn't exist. I even tried ar.expr0
and it said that variable doesn't exist.
I've done this exact same method of accessing AggregateResults in APEX classes and it works perfectly fine, but not this Anonymous Execution Window... What could possibly be wrong?
ar.get('quiz')
to be able to get the data here. If you don't have aliases, then you usear.get('expr0')
and so on depending on the order of the field.