2013-02-23 204 views
0

我對SQL選擇非常不滿。我有一個表有4個參數:id,國家,地址和價格。該表具有相同的ID很多行,我試圖獲得每個ID的價格總和。舉例來說,如果我有一個數據:SQL只選擇第一行

ID Country Address Price 
1 France Address1 1000 
1 France Address2 3332 
1 France Address1 1562 
1 France Address3 1123 
1 France Address2 1123 
2 UK  Address8 1234 
2 UK  Address7 1233 

我想獲得下一結果:

ID Country Address Price 
1 France Address1 SUM(1000, 3332, 1562, 1123, 1123) 
2 UK  Address8 SUM(1234, 1233) 

我已經嘗試了許多疑問,但我無法獲得結果。問題是我獲得按國家和地址分組的數據,並且由於我有不同的地址,因此我獲得了多行,例如法國的三個地址。

在此先感謝。

對不起,我的英語水平。

+0

你正在使用什麼RDBMS?你的首字母是什麼意思?哪些地址的最大或最小?行不會在表中以特定順序存儲,因此您必須指定要根據該順序選擇第一行的順序。 – 2013-02-23 11:15:54

回答

4

不知道你是怎麼排序的地址,一個分不清什麼被認爲是第一個地址行。如果按升序排序,則:

SELECT [ID], Country, MIN(Address), SUM(Price) As TotalPrice 
FROM  tblYourTableName 
GROUP BY [ID], Country 
ORDER BY [ID] 

如果不是,那麼你將需要實現一個子查詢來排序ID &國家的地址。需要了解更多。

+0

我已經嘗試過,但我有同樣的問題。我只想爲每個id獲取一行,但由於我有多個地址,我獲得了多行。 – ReyLitch 2013-02-23 11:11:04

+0

對不起,我忘了使用MIN。這樣可行。非常感謝大家。 – ReyLitch 2013-02-23 11:14:34

+0

會很感激,如果你標記爲答案 – 2013-02-23 11:15:53

0

檢查是否正常工作

SELECT country, SUM(price) 
FROM table 
GROUP BY country 
0

答案根據您的DBMS而改變。例如:

SELECT [ID], Country, Address, SUM(Price) As TotalPrice 
FROM  tblYourTableName 
GROUP BY Country 
ORDER BY [ID] 

此查詢不適用於Sql Server,Oracle但適用於MySql。

0

到查詢最簡單的方法是這樣的一個

select a.ID, a.Country, a.Address, sum(a.Price) as TotalPrice 
from address a 
group by a.ID; 

但對方說,我們需要知道你是怎麼想的相關地址排序,國家有適當的輸出。

另一個重要的事情是數據庫管理系統。

順便說一句,如果你想測試它迅速http://www.sqlfiddle.com/#!2/61ba6/4

你甚至可以改變的DBMS,所以你是100%肯定的查詢將工作檢查此SQLFiddle。