专门做衣服的网站,淮南论坛网,网站核验通知书,wordpress大负载是否可以对我的sql SELECT语句的结果进行分组而不创建临时表以对一条语句进行求和和分组#xff1f; 我有一张表格#xff0c;保存贷方帐户号和借方帐户号的借方和贷方总额。并为相反的字段输入零#xff0c;我在下面的联合选择语句下进行了第一个分组#xff0c;我需要根据…是否可以对我的sql SELECT语句的结果进行分组而不创建临时表以对一条语句进行求和和分组 我有一张表格保存贷方帐户号和借方帐户号的借方和贷方总额。并为相反的字段输入零我在下面的联合选择语句下进行了第一个分组我需要根据重复的帐户名称对输出求和我可以很容易地获得相同的结果还是必须加载它的临时表 我的选择声明如下select journal_drname AS ACCNAME, sum(amount) AS DEBT,0 as CREDITFROM JOURNAL GROUP BY journal_drnameUNION select journal_crname AS ACCNAME, 0 as DEBT,sum(amount) ASCREDIT,FROM JOURNAL GROUP BY journal_crname返回数据例如ACCNAME DEBIT CREDIT-------- ------- ------CASH 0 1,000CASH 900 0CASH 300 0BANK 200 0BANK 400 0我可以在上方总结以下几项ACCNAME DEBIT CREDIT-------- ------- ------CASH 200 0BANK 600 0我想将这些结果与上述相同。我试图避免使用临时表但是如果这是唯一可行的方法那么我想了解更多有关以这种方式使用临时表的信息。我也尝试进行某种形式的联接和联合但不满足条件而且我也不知道该怎么做。除非journal_drname中包含不寻常的字符否则您的结果没有意义。改写每个现金名称和现金的贷方和借项值分别为0怎么办 您提出的SQL否定了这种可能性。是的我有两种情况下的帐户名有时会记入贷方在这种情况下我必须将帐户名加载到journal_crname中如果借记了相同的帐户名则必须将其加载到journal_crname字段中因此我在外部帐户名中加载了两列 journal_drname和journal_crname正如您所说的查询工作正常让我们将联合查询称为表格( ...... ) myTable然后只需创建一个子查询即可获得最后一步SELECT ACCNAME,CASE WHEN SUM(CREDIT - DEBT) 0 THEN - SUM(CREDIT - DEBT)ELSE 0END DEBT,CASE WHEN SUM(CREDIT - DEBT) 0 THEN SUM(CREDIT - DEBT)ELSE 0END CREDITFROM ( ...... ) myTableGROUP BY ACCNAME该语句看起来很完美但仍然给我错误消息不接受最后一行 GROUP BY ACCNAME我将继续检查并恢复thxs是的现在工作量增加了三倍您发现错误了吗是的我错过了将内部表别名myTable放的原因这就是为什么。如果每个子查询只需要一行则删除group byselect CASH as ACCNAME, sum(amount) AS DEBT, 0 as CREDITFROM JOURNALUNION ALLselect BANK as ACCNAME, 0 as DEBT, sum(amount) AS CREDITFROM JOURNAL;(注意ACCNAME值可能相反。)要点对于这种类型的查询应该使用UNION ALL而不是UNION。 除非您打算删除重复项否则没有理由承担删除重复项的开销。另外除非accname字段中有不寻常的字符否则您的原始查询应该已经起作用。我喜欢它...但是我对除非您打算删除重复项感到困惑根据定义不能有重复项。 基于SQL。 CASH和BANK否定联合中的重复项并且在内部由于每行只有一行因此不能有重复项。 也许您需要在联合的每个部分中的journal_drname的where子句对于银行的一个子句对于现金的子句。xQbert。。。 即使没有重复项UNION总是会产生删除重复项的开销(我说总是但是我想某个地方的某些数据库可能会识别出某些短路重复项消除的特殊情况)。关于什么select ACCNAME,CASE WHEN sum(DEBT)sum(CREDIT) THEN sum(DEBT)-sum(CREDIT) ELSE 0 AS DEBT,CASE WHEN sum(DEBT)FROM (select journal_drname AS ACCNAME,sum(amount) AS DEBT,0 as CREDITFROM JOURNAL GROUP BY journal_drnameUNIONselect journal_crname AS ACCNAME,0 as DEBT,sum(amount) AS CREDIT,FROM JOURNAL GROUP BY journal_crname) group by ACCNAME我相信mySql子查询必须具有别名才能工作。