【问题标题】:SQLite - Returning column total w/all rowsSQLite - 返回包含所有行的列总数
【发布时间】:2012-09-08 07:44:37
【问题描述】:

我有以下 SQLite 表:

transaction_amount     transaction_date
50                     09/06/2012
50                     09/06/2012
75                     09/07/2012

我希望获取列 transaction_amount 的总金额。如果我这样写我的 SQL 查询:

SELECT transaction_amount,transaction_date, SUM(transaction_amount) AS 
Total FROM prepaid_tbl WHERE playerID = 17 ORDER BY id DESC

我得到以下结果:

 transaction_amount     transaction_date  Total
 75                     09/07/2012        175

我需要与总数一起返回所有三行。所以,如果我这样写 SQL 语句:

SELECT transaction_amount,transaction_date,(SELECT SUM(transaction_amount) 
FROM prepaid_tbl WHERE playerID = 17)Total FROM prepaid_tbl WHERE 
playerID = 17 ORDER BY id DESC

我现在得到了我正在寻找的结果:

transaction_amount     transaction_date    Total
50                     09/06/2012          175
50                     09/06/2012          175
75                     09/07/2012          175

所以,我的简单问题是这是获得我想要的结果的最佳方法/实践。我无论如何都不是 SQL 专家,所以我仍然不确定为什么第一种方法没有返回我想要的结果。任何见解都值得赞赏。

谢谢,提前。

【问题讨论】:

    标签: sql sqlite


    【解决方案1】:

    你可以cartesian join来解决你的问题

    SELECT  a.transaction_amount,
            a.transaction_date,
            b.Total
    FROM prepaid_tbl  a,
            (
                SELECT  SUM(transaction_amount) AS  Total 
                FROM prepaid_tbl 
                WHERE playerID = 17 
            ) b
    WHERE a.playerID = 17 
    

    SQLFiddle Demo

    【讨论】:

    • 感谢您的回复。我刚刚尝试了您的 SQL 语句,它只返回每个 Total 字段中的行总数 (i.e.50,50,75) 。我想在 Total 字段中返回总和 (175)。
    • 是的,这是我的第一个答案。查看我更新的答案:D 希望它现在有效。
    • 谢谢!因此,简而言之,如果我需要获取列的总和/总计,我将总是需要在查询中使用辅助 SELECT 语句。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-02
    • 1970-01-01
    相关资源
    最近更新 更多