我希望你能在这个SQL查询中帮助我。 (SQL SERVER) 我有这些表
TABLE1
COLUMN0 COLUMN1 COLUMN2 COLUMN3
A DOLAR 2.5 18/02/2013
A DOLAR 1.5 18/02/2013
B EURO 22 19/02/2013
B DOLAR 4.5 19/02/2013
B DOLAR 1.3 18/02/2013
C EURO 0.5 19/02/2013
TAB_RATES
COLUMN0 COLUMN1
18/02/2013 1.35
19/02/2013 1.36
我想以美元添加所有'B'值(COLUMN2) 但我有一些欧元 TABLE1中的Column3显示该日期的dolar值(FK_TAB_RATES)
什么是SQL查询?
答案 0 :(得分:2)
我的猜测是你的Tab_Rates表是给定日期的货币乘数。如果是这样,这样的事情可能有用:
SELECT SUM (T.Column2 *
CASE
WHEN T.Column1 = 'Euro'
THEN TR.Column1
ELSE 1.0
END) SummedAmt
FROM Table1 T
JOIN Tab_Rates TR ON T.Column3 = TR.Column0
WHERE T.Column0 = 'B'
这是一个SQL Fiddle来演示它。
这产生35.72。手动完成,4.5 + 1.3 + 22(1.36)= 35.72
祝你好运。答案 1 :(得分:1)
尝试这样的事情(未经测试)
select t1.col0,
sum (case when t1.col1 = 'euro' then t1.col1 * rate.r
else t1.col1 end) as s
from t1
inner join rate on rate.r = t1.col3
group by col0
答案 2 :(得分:0)
试试这个:
SELECT SUM (T.Column2 *
CASE
WHEN T.Column1 = 'Euro'
THEN TR.Column1
ELSE 1.0
END) SummedAmt
FROM Table1 T
JOIN Tab_Rates TR ON T.Column3 = TR.Column0
WHERE T.Column0 = 'B'