如何获得某一天发生的交易金额之和?

时间:2019-06-05 05:05:37

标签: sql oracle select plsql oracle11g

我正在尝试编写一个查询,该查询将为我提供一次发生的交易金额总和。问题是,当我在查询中添加列日期时,我得到的是单个值而不是它们的总和。此查询的要求是每个商人都有一个条目,但我要为一个商人获得多行。

SELECT SUBSTR(m.MERCHANTLASTNAME, 1, 36) Name1,                 

                                     m.MERCHANTBANKBSB MerchantAccbsb,                 

                                     m.MERCHANTBANKACCNR Merchant_act,                 

                                     m.MERCHANTID merchantid, 

                                     t.transactiondate date1,
                                     sum(t.TRANSACTIONAMOUNT) as total            

            FROM fss_merchant m 
            JOIN fss_terminal term 
            ON m.MERCHANTID = term.MERCHANTID                        
            JOIN FSS_DAILY_TRANSACTION t 
            ON term.TERMINALID = t.TERMINALID 
            group by t.transactiondate, SUBSTR(m.MERCHANTLASTNAME, 1, 36), m.MERCHANTID, m.MERCHANTBANKBSB, m.MERCHANTBANKACCNR, 
    m.MERCHANTLASTNAME 

我的查询输出: here

我希望每个商人在一天中获得一个条目,其交易金额之和,而不是当天的多行交易。

3 个答案:

答案 0 :(得分:1)

您可以在不同的内部查询中以截短的日期计算总金额,并将其与FSS_MERCHANT表联接,以便处理@SatishSK和@mangusta所描述的问题。

您可以使用以下查询:

SELECT
    SUBSTR(M.MERCHANTLASTNAME, 1, 36) NAME1,
    M.MERCHANTBANKBSB        MERCHANTACCBSB,
    M.MERCHANTBANKACCNR      MERCHANT_ACT,
    M.MERCHANTID             MERCHANTID,
    M_DATA.TRANSACTIONDATE   DATE1,
    M_DATA.TOTAL             AS TOTAL
FROM
    FSS_MERCHANT M
    INNER JOIN (
        SELECT
            TERM.MERCHANTID   MERCHANTID,
            TRUNC(T.TRANSACTIONDATE) TRANSACTIONDATE,
            SUM(T.TRANSACTIONAMOUNT) AS TOTAL
        FROM
            FSS_TERMINAL TERM
            JOIN FSS_DAILY_TRANSACTION T ON TERM.TERMINALID = T.TERMINALID
        GROUP BY
            TERM.MERCHANTID,
            TRUNC(T.TRANSACTIONDATE)
    ) M_DATA ON ( M.MERCHANTID = M_DATA.MERCHANTID );

祝你好运!

答案 1 :(得分:0)

t.transactiondate列可能包含日期和时间值。在仅使用t.transactiondate的地方使用TRUNC(t.transactiondate)。您将获得每个商人的“交易量”“日期”。

OR

根据WHERE子句中的“日期”值过滤出行,以检索与特定日期有关的数据。

答案 2 :(得分:0)

原因可能是您在m.MERCHANTLASTNAME子句中同时包含了SUBSTR(m.MERCHANTLASTNAME,1,36)group by

如果某些条目具有相同的SUBSTR(m.MERCHANTLASTNAME,1,36)但不同的m.MERCHANTLASTNAME,则将产生重复项。您需要从m.MERCHANTLASTNAME子句中删除group by