android - 查找不同用户的列总和的差异

标签 android sql database sqlite

我想找出用户的借方和贷方交易总和的差异并列出来。

这是我试过的查询:

SELECT *, (val1 - val2)
FROM (SELECT *, sum(transactionAmount) AS val1
      FROM tableTransaction
      WHERE creditedToNum = My_Number
      GROUP BY debtToNum) db
JOIN (SELECT *, sum(transactionAmount) AS val2
      FROM tableTransaction
      WHERE debtToNum = My_Number
      GROUP BY creditedToNum) Cr
WHERE db.transactionStatus = 1
  AND db.isActive = 1;

它返回 0 行,但实际输出应该如下所示
这是我的表结构:

| Amount | Credit_to | Debit_to  |
|--------|-----------|-----------|
| 2000   | My_Number | Number_1  |
| 5000   | My_Number | Number_2  |
| 3000   | Number_1  | My_Number |
| 4000   | Number_2  | My_number |
| 2000   | My_Number | Number_2  |

我想要的实际结果是:

| Name     | Amount |
|----------|--------|
| Number_1 | 1000   |
| Number_2 | 3000   |

最佳答案

您的查询中没有连接条件。

与其加入,不如使用 compound query 更好。将数据转化为有用的形式:

SELECT Credit_to AS Name, Amount
FROM tableTransaction
WHERE Debit_to = @My_Number
UNION ALL
SELECT Debit_to, -Amount
FROM tableTransaction
WHERE Credit_to = @My_Number;
| Name     | Amount |
|----------|--------|
| Number_1 |  3000  |
| Number_2 |  4000  |
| Number_1 | -2000  |
| Number_2 | -5000  |
| Number_2 | -2000  |

Then just group it:

SELECT Name, SUM(Amount) AS Total
FROM (SELECT Credit_to AS other, Amount
      FROM tableTransaction
      WHERE Debit_to = @My_Number
      UNION ALL
      SELECT Debit_to AS other, -Amount
      FROM tableTransaction
      WHERE Credit_to = @My_Number)
GROUP BY Name
ORDER BY Name;
| Name     | Total |
|----------|-------|
| Number_1 |  1000 |
| Number_2 | -3000 |

关于android - 查找不同用户的列总和的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39219862/

相关文章:

MySQL 外键错误 150

javascript - 如何在 webview 组件中检索 Javascript 函数值

android - 在android中将图像转换为铅笔素描效果

sql - 简单的 psql 计数查询

sql - 如何在 postgresql 中使用带有 ON CONFLICT 子句的 IF ELSE?

PHP MySQL 内连接问题

java - 为什么方法 onClick(View v) 有 View 类型参数?

java - 从哈希表中获取所有值

sql - 将 Oracle 查询转换为 SQL Server Reporting Services (SSRS) 的存储过程

java - EJB3 数据源 DataSource.getConnection