将处理或功能应用于需要从另一个sqlite表中检索列的列

时间:2018-10-18 03:50:54

标签: sql sqlite

假设我在sqlite3中有此表name_currency

name,   currency,   price
AA,     SGD,        1
BB,     USD,        2
CC,     EUR,        3

我需要以这种方式处理价格。

if currency == "SGD", price = price*X 
if currency == "USD", price = price*Y
if currency == "EUR", price = price*Z

需要从另一个表X中检索YZcurrency_multiplier的值。 currency_multiplier就是这样。

name,   currency,   multiplier
AA,     SGD,        2  #value of X 
BB,     USD,        3  #value of Y
CC,     EUR,        4  #value of Z

在处理price列之后,输出表将如下所示;

name,   currency,   price
AA,     SGD,        2
BB,     USD,        6
CC,     EUR,        12

是否可以完全在sql中做到这一点?我想到的一种解决方案是从name_currency检索值,然后在python函数中进行处理。但是,我认为完全在sql中完成更为优雅。关于如何开始的任何提示?当处理变得过于复杂时,sqlite3中的SQL是否支持某种形式的功能?

1 个答案:

答案 0 :(得分:2)

您可以将name_currency表加入到currency_multiplier表中:

SELECT
    n.name,
    n.currency,
    c.multiplier * n.price AS price
FROM name_currency n
INNER JOIN currency_multiplier c
    ON n.name = c.name;

请注意,这冒着从报告中删除name_currency中出现但currency_multiplier中没有映射的货币的风险。但是,在这种情况下,由于乘数/外汇比率未知,因此您仍将不清楚如何报告。