我要求通过核心数据从表中获取姓名、电子邮件、手机号码、总和(金额)。
如果我使用 sql,那么我的 sql 查询如下所示:
select name,eMail,mobileNo,sum(amount) amt1 from T1 GROUP BY name,eMail,mobileNo;
在这里,我得到了正确的结果。
我对核心数据也是如此。
我可以通过提供 GROUP BY name 来获取 name 和 SUM(amount)。我为此提供了以下代码。
[请求 setPropertiesToGroupBy:[NSArray arrayWithObject:statusDesc]];
我不知道如何在核心数据的 Group by 中添加多个属性。任何人都可以帮助我做到这一点。
NSEntityDescription *entityDesc = [NSEntityDescription entityForName:@"Entity1" inManagedObjectContext:context];
NSAttributeDescription* statusDesc = [entityDesc.attributesByName objectForKey:@"name"];
NSExpression *sumExpression = [NSExpression expressionForFunction:@"sum:" arguments:[NSArray arrayWithObject:[NSExpression expressionForKeyPath:@"totalAmount"]]];
NSExpressionDescription *expressionDescription = [[NSExpressionDescription alloc]init];
[expressionDescription setName: @"sumTot"];
[expressionDescription setExpression: sumExpression];
[expressionDescription setExpressionResultType:NSDecimalAttributeType];
NSFetchRequest *request = [[NSFetchRequest alloc] init];
[request setEntity:entityDesc];
[request setPropertiesToFetch:[NSArray arrayWithObjects:@"name",expressionDescription, nil]];
[request setPropertiesToGroupBy:[NSArray arrayWithObject:statusDesc]];
[request setResultType:NSDictionaryResultType];
NSError *error = nil;
myArray = [context executeFetchRequest:request error:&error];