我有這樣一個表格:(請注意名稱不是唯一的,可以重複,而Personal_ID是唯一的)。SQL如何在一個字段上求和,並在一個截面中有不同的字段?
ID SourceID Personal_ID Name NumberOfPurchases
1 4 1001 Alex 10
2 2 1002 Sara 5
3 4 1001 Alex 12
4 1 1003 Mina 200
5 2 1002 Sara 20
6 2 1001 Alex 64
現在需要做的是獲得每個人基於給定SourceID的購買總數。所以,我們有結果sourceId = 4
爲:
Name Total Number of Purchases
1. Alex 22
而對於的SourceID = 2
Name Total Number of Purchases
1. Alex 64
2. Sara 25
爲此,我想出了這樣的事情:
SELECT Name,Sum(NumberOfPurchases) AS Total
FROM tblTEST
GROUP BY (Personal_ID)
HAVING (SOURCEID = @id)
但這顯然錯誤。我卡在這裏,如果我將其他字段添加到group-by clause
,結果將完全不同,如果我不這樣做,這個選擇命令將無法正常工作。我怎樣才能達到這樣的結果?
謝謝非常多,但名稱不是唯一的,所以他們可以重複,以便查詢不會給我預期的結果! – Breeze 2013-02-19 11:26:52
'HAVING'僅將集合函數調用的結果與某個值進行比較([MSDN](http://msdn.microsoft.com/zh-cn/library/ms180199.aspx))。這不會編譯。 – 2013-02-19 11:27:12
@Hossein:但Personal_ID和Name **的組合是**唯一的,對嗎?或者你想讓_Alex_組中的不同Alexes和_Sara_組中的Sara組合? – Josien 2013-02-19 11:59:31