コアデータによってテーブルから name,eMail,mobileNo,sum(amount) を取得するという私の要件。
SQL を使用する場合、SQL クエリは次のようになります。
select name,eMail,mobileNo,sum(amount) amt1 from T1 GROUP BY name,eMail,mobileNo;
ここで私は正しい結果を得ています。
コアデータについても同じことが言えます。
GROUP BY name を指定することで、name と SUM(amount) を取得できます。そのために以下のコードを用意しました。
[request 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];