我有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"
因此,在结果中,只获得一种货币类型,即美元金额,因此我可以在此基础上显示报告。
有可能吗?请任何人帮我制作这种查询或任何其他方式。
由于
答案 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,那会更好。