是否可以对我的sql SELECT语句的结果进行分组而不创建临时表以对一条语句进行求和和分组?我有一张表格,保存贷方帐户号和借方帐户号的借方和贷方总额。
并为相反的字段输入零,我在下面的联合选择语句下进行了第一个分组,我需要根据重复的帐户名称对输出求和
我可以轻松地获得相同的结果,还是必须加载它的临时表?我的选择声明如下

select  journal_drname  AS ACCNAME, sum(amount) AS DEBT,0 as CREDIT
FROM JOURNAL GROUP BY journal_drname
 UNION select  journal_crname  AS ACCNAME, 0 as DEBT,sum(amount) AS
 CREDIT,
 FROM JOURNAL GROUP BY journal_crname


返回数据,如:

ACCNAME      DEBIT     CREDIT
--------   -------     ------
CASH        0           1,000
CASH        900          0
CASH        300          0
BANK        200          0
BANK        400          0


我可以在上方总结以下几项:

ACCNAME      DEBIT     CREDIT
--------   -------     ------
CASH        200          0
BANK        600          0


我想将这些结果与上述相同。

我试图避免使用临时表,但是,如果这是唯一可行的方法,那么我想了解更多有关以这种方式使用临时表的信息。

我也尝试过进行某种形式的联接和联合,但不满足条件,而且我也不知道该怎么做。

最佳答案

正如您所说的那样,查询工作正常,让我们将联合查询称为表格

( ...... ) myTable


然后只需创建一个子查询即可获得最后一步

SELECT ACCNAME,
       CASE WHEN SUM(CREDIT - DEBT) < 0 THEN - SUM(CREDIT - DEBT)
            ELSE 0
       END DEBT,
       CASE WHEN SUM(CREDIT - DEBT) > 0 THEN   SUM(CREDIT - DEBT)
            ELSE 0
       END CREDIT
FROM ( ...... ) myTable
GROUP BY ACCNAME

10-06 16:20
查看更多