SQL:如何在此查询中选择和汇总列?

时间:2015-10-06 10:11:08

标签: sql sql-server sql-server-2008

我一直在寻找,但没有找到我的确切案例,所以我试着在这里问。 有一个查询(我遗憾地可能不会透露)具有这种结构:

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部分中。谢谢大家指点这么快!

1 个答案:

答案 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字段分组 - 这可能会导致您获得意外结果。