我一直在寻找,但没有找到我的确切案例,所以我试着在这里问。 有一个查询(我遗憾地可能不会透露)具有这种结构:
WITH MAINRESULT AS
(
SELECT ... FROM ... WHERE...GROUP BY...
)
SELECT Name, SUM(MAINRESULT.Amount1 * AnotherAmount) AS MySum FROM MAINRESULT
WHERE .....
GROUP BY Name, AnotherAmount
ORDER BY Name
现在,我得到这样的东西:
**Name** **MySum**
A 5
A 5
B 1
C 2
但我希望将这个结果用于SUM-med,以便我得到:
**Name** **MySum**
A 10
B 1
C 2
如何通过修改我的查询结构来完成此操作? 尝试添加" SELECT FROM"围绕着WITH-query parn和它下面的第二个SELECT,但它说我有语法错误。
更新: 我一直盯着那个查询我错过了AnotherAmount不应该被包含在GROUP BY部分中。谢谢大家指点这么快!
答案 0 :(得分:0)
看起来您需要删除let allPeople = ABAddressBookCopyArrayOfAllPeople(addressBook).takeRetainedValue() as NSArray
for person: ABRecordRef in allPeople {
var compositeName: String? = ""
let cName = ABRecordCopyCompositeName(person)
if cName != nil {
compositeName = cName.takeRetainedValue() as String
} else {
compositeName = ""
}
let phones: ABMultiValueRef = ABRecordCopyValue(person, kABPersonPhoneProperty).takeRetainedValue()
for counter in 0..<ABMultiValueGetCount(phones) {
let phone = ABMultiValueCopyValueAtIndex(phones, counter).takeRetainedValue() as! String
contactArray.append(nameNumber(name: compositeName!, number: phone))
}
}
并在查询中仅保留GROUP BY Name, AnotherAmount
。否则,您的结果不仅会被名称分组,还会被某些AnotherAmount字段分组 - 这可能会导致您获得意外结果。