首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL -使用NONAGGREGATE表连接聚合表

SQL -使用NONAGGREGATE表连接聚合表
EN

Stack Overflow用户
提问于 2014-12-22 11:13:14
回答 1查看 62关注 0票数 2

我编写了以下代码,从每笔贷款中选择剩余利息支付总额:

选择a.PARENTREF,a.INTEREST - Isnull(b.INTEREST,0)作为利息(选择PARENTREF,SUM(总计)作为LG_011_BNCREPAYTR的利息,其中TRANSTYPE =0组由PARENTREF组成)一个左外部连接(选择PARENTREF,SUM(总计)作为LG_011_BNCREPAYTR的利息,其中TRANSTYPE =1组由PARENTREF) b ON a.PARENTREF = b.PARENTREF

它带来了如下表格:

利息1 500.93 2 510.00 3 1200.90 4 500.93

现在,在数据库中还有另一个表,它包含关于贷款的其他信息,比如贷款描述。该表的LOGICALREF是该表中的PARENTREF。该表如下:

1.汽车贷款0 2015-10-01 2消费贷款2 2015-10-01 3汽车贷款4 2015-10-01 4汽车贷款2015年3月-10-01

我试图将我的表与我提到的最后一个表结合起来,但出于某种原因,我得到了DESCRIPTIONCURRENCYREFDUEDATE作为NULL。我认为由于我使用的GROUP BY有问题,因为如果我不聚合,这些函数就能工作。我想要的表格如下:

1 500.93辆汽车贷款.2015年-10-01 2 510.00消费贷款2 2015-10-01 3 1200.90汽车贷款4 2015-10-01 4500.93汽车贷款3 2015-10-01

非常感谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-12-22 11:17:44

试试这个:

代码语言:javascript
复制
SELECT a.PARENTREF, a.INTEREST - ISNULL(b.INTEREST, 0) AS INTEREST, 
       T.DESCRIPTION, T.CURRENCYREF, T.DUEDATE 
FROM YourTable T 
INNER JOIN (SELECT PARENTREF, SUM(TOTAL) AS INTEREST
            FROM LG_011_BNCREPAYTR 
            WHERE TRANSTYPE = 0 
            GROUP BY PARENTREF) A ON T.LOGICALREF = A.PARENTREF
LEFT OUTER JOIN (SELECT PARENTREF, SUM(TOTAL) AS INTEREST
                 FROM LG_011_BNCREPAYTR 
                 WHERE TRANSTYPE = 1 
                 GROUP BY PARENTREF
                ) b ON a.PARENTREF = b.PARENTREF;

您还可以使用下面的查询找到解决方案

代码语言:javascript
复制
SELECT A.PARENTREF, 
      (SUM(CASE WHEN A.TRANSTYPE = 0 THEN A.TOTAL ELSE 0 END) - SUM(CASE WHEN A.TRANSTYPE = 1 THEN A.TOTAL ELSE 0 END)) AS INTEREST, 
       T.DESCRIPTION, T.CURRENCYREF, T.DUEDATE 
FROM YourTable T 
INNER JOIN LG_011_BNCREPAYTR A ON T.LOGICALREF = A.PARENTREF 
GROUP BY A.PARENTREF;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27601558

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档