SQLite:如何找到两个和值以及它们之间的差异?

时间:2017-11-24 00:01:21

标签: sql sqlite

假设我有一堆货币兑换对。它有4列:

CURR_BOUGHT | AMT_BOUGHT | CURR_SOLD | AMT_SOLD

所以说我们有10英镑,我们交换它为13.33美元,该行将填充:

USD | 13.33 | GBP | 10

我们在各种货币对中拥有大量这些交易。现在说我想知道我在所有交易中买入的美元总额,以及我在所有交易中卖出的美元总额,以及两者之间的差额?是否可以运行打印这3个数字的查询?

这个相当混乱的查询将在单独的行中打印3个数字。我试图得到它,以便在同一行的不同列中打印3个数字。

SELECT SUM(AMT_BOUGHT) FROM TRADES WHERE (CURR_BOUGHT = 'USD') UNION SELECT SUM(AMT_SOLD) FROM TRADES WHERE (CURR_SOLD = 'USD') UNION SELECT (SELECT SUM(AMT_BOUGHT) FROM TRADES WHERE (CURR_BOUGHT = 'USD')) - (SELECT SUM(AMT_SOLD) FROM TRADES WHERE (CURR_SOLD = 'USD')) FROM TRADES;

1 个答案:

答案 0 :(得分:1)

上面与联合使用的代码为每行提供了一个结果(联盟的作用是什么 - 将不同的行组添加到一起)。为了使它成为所有一个查询,摆脱工会并使用逗号,使每个单独的查询成为子查询。

SELECT (SELECT SUM(AMT_BOUGHT) FROM TRADES WHERE (CURR_BOUGHT = 'USD')) AS AMT_BOUGHT, 
    (SELECT SUM(AMT_SOLD) FROM TRADES WHERE (CURR_SOLD = 'USD')) AS AMT_SOLD,
    (SELECT SUM(AMT_BOUGHT) FROM TRADES WHERE (CURR_BOUGHT = 'USD')) - (SELECT SUM(AMT_SOLD) FROM TRADES WHERE (CURR_SOLD = 'USD')) FROM TRADES AS DIFF;