0

我希望你能帮助我,在这个 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 中的第 3 列显示了该日期的美元值(FK_TAB_RATES)

什么是 sql 查询?

4

3 回答 3

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

祝你好运。

于 2013-02-12T23:38:11.457 回答
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
于 2013-02-12T23:39:43.273 回答
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'
于 2013-02-13T05:45:58.403 回答