MySQL Group by Query但有一个查询我需要转换货币汇率&合并结果

时间:2012-03-02 10:19:38

标签: sql group-by

我有Table with Field

id | Customer | Currency Type | Sales Amt | Date
=====================================================
1  | ClientA  | Dollar        | 100$      | Timestamp
2  | ClientB  | Rupees        | 1500Rs    | Timestamp

我正在尝试查询"Select Currency Type, Sum(Sales Amt) from Table where Date between start and End group by Currency Type"

但我想首先计算所有卢比,然后将它们与Dollar类型合并。 Sum(Sales Amt)*45(Conversion rate) where currency='rupees"

因此,在结果中,只获得一种货币类型,即美元金额,因此我可以在此基础上显示报告。

有可能吗?请任何人帮我制作这种查询或任何其他方式。

由于

3 个答案:

答案 0 :(得分:1)

您可以使用搜索的CASE语句来确定每条记录是否需要将其转换为美元。

SELECT  SUM(CASE [Currency Type]
              WHEN 'Rupees' THEN [Sales Amt] * 45
              WHEN 'Dollar' THEN [Sales Amt]
              WHEN 'Other'  THEN [Sales Amt] * ???
              ELSE [Sales Amt]
            END)
FROM    Table
WHERE   Date BETWEEN Start and End

答案 1 :(得分:0)

创建一个表CurrencyConvertTable 具有以下表结构和数据

| CurrencyType | CurrencyConvertRate |
======================================
| Dollar        | 1                  | 
| Rupees        | 45                 | 

像这样的Noq查询..

Select CurrencyType
,Sum(SalesAmt*CurrencyConvertRate) 
from MainTable mt
JOIN CurrencyConvertTable ct
  ON mt.CurrencyType = ct.CurrencyType
where Date between start and End 
group by CurrencyType

处理更多货币类型的最佳方式..

答案 2 :(得分:0)

我建议使用自己的货币换算系数表。

conversion_id     source   target   factor
1                 Rupees   Dollar   45.0
2                 Dollar   Dollar   1.0

现在您可以加入货币转换表并动态计算总和,而无需使用CASE WHEN END构造。 如果您还设计货币表并仅使用货币ID,那会更好。