所以我有一张表如下
Person Currency Price
Steve GBP 10
Steve GBP 20
Steve EUR 30
Dave USD 10
Dave USD 10
Dave EUR 20
John EUR 30
John GBP 20
John USD 30
我希望有一个输出视图,根据货币消耗的金额总结每个客户,如下所示:
Person Currency Amount
Steve GBP 30
Steve EUR 30
Dave USD 20
Dave EUR 30
John EUR 30
John GBP 20
John USD 30
我做了什么
到目前为止,我尝试过这样的查询:
SELECT
Person,
Currency,
SUM(Price) As Amount
FROM Table
GROUP BY Currency
这样做的逻辑是,它会根据他们的货币对它们进行排序,但这没有用,它还告诉我需要在GROUP BY子句中添加更多内容。我错过了什么?
更新
到目前为止,所有评论都很棒,但我遗漏了一些细节。
货币是一对,即美元/英镑,为了选择我需要的货币,我使用的是LEFT功能
示例:
LEFT(CURRENCYPAIR,3) AS Currency,
这导致了这样的列表:
AUD
GBP
EUR
USD
USD
USD
答案 0 :(得分:3)
使用以下GROUP BY查询:
SELECT Person,Currency,SUM(Price) As Amount
FROM Table
GROUP BY Person ,Currency
答案 1 :(得分:2)
您必须正确使用GROUP BY clausule:
SELECT
Person,
LEFT(CURRENCYPAIR,3) AS Currency,
SUM(Price) As Amount
FROM Table
GROUP BY Person,LEFT(CURRENCYPAIR,3)
答案 2 :(得分:1)
你非常接近。请试试......
SELECT Person,
Currency,
SUM(Price) As Amount
FROM Table
GROUP BY Person,
Currency;
根据您的问题,数据首先由客户分组,然后按货币分类。之后,您需要与该客户/货币分组相关联的价格总和。
首先执行上述GROUP BY
,然后对每个子组中包含的数据执行SUM()
等聚合函数。
另外,请考虑为您的表提供比Table
更好的名称。我建议像ClientCurrencyExpenditure,tblClientCurrencyExp等
答案 3 :(得分:1)
试试这个,
选择
人,
货币,
SUM(Price)As TotalSumOfCurrencyByPerson
FROM Table GROUP BY Person,LEFT(CURRENCYPAIR,3)
第一个问题是你只按货币分组,因为只有四种类型可以给你所有英镑,澳元,美元和欧元的总和。您需要在查询中添加另一层分组,以便按人员对每种货币求和。
第二个问题是你还需要按照你选择的“LEFT(CURRENCYPAIR,3)”进行分组。
希望这有帮助!