首页 > 解决方案 > 将处理或函数应用于需要从另一个 sqlite 表中检索列的列

问题描述

假设我name_currency在 sqlite3 中有这个表。

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, Y,的值Z需要从另一个表中检索currency_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 是否支持某种形式的函数?

标签: sqlsqlite

解决方案


您可以将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。但是,在这种情况下,尚不清楚您将如何报告,因为乘数/外汇汇率是未知的。


推荐阅读