首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过将总金额与另一表中的金额进行比较,获得最大日期。

通过将总金额与另一表中的金额进行比较,获得最大日期。
EN

Database Administration用户
提问于 2016-12-27 06:03:54
回答 1查看 101关注 0票数 2

我有两个表tableA(S.no. )和tableB(Id,paid_amt,trxn_dt)

代码语言:javascript
复制
   tableA                tableB
S.no.  amount     Id    paid_amt    trxn_dt  
1       500       1       200      2015-01-01   
2       500       2       300      2015-02-10
3       500       3       500      2015-04-10
4       500       4       1000     2015-10-10   

现在我需要一个查询来获得输出,如下所示:

代码语言:javascript
复制
S.no.    amount          trxn_dt
 1        500           2015-02-10
 2        500           2015-04-10
 3        500           2015-10-10
 4        500           2015-10-10

我需要比较来自tableB的tableB之和,以匹配每一个tableA量,并根据它得到最大trxn_dt。E (200+300)=500,所以得到最大值(Trxn_dt),即2015-02-10.同样,对于第2条,get max(trxn_dt)为2015-04-10,最后1 000为2015年-10-10,所以get max(trxn_dt)为2015-10-10 s.no。3和4.也就是说,我必须得到trxn_dt的确切支付金额,根据s.no。我可以使用java中的结果集来完成这个任务,但是对于包含大量数据的表来说,这是很费时的,我希望得到任何帮助。谢谢。

EN

回答 1

Database Administration用户

回答已采纳

发布于 2016-12-27 10:42:30

需求似乎很复杂,但是如果首先计算运行总数,这是一个简单的比较。

查找来自b的第一个running_total,它覆盖了a中的running_total:

代码语言:javascript
复制
WITH 
  rta AS
    ( SELECT [S.no], amount,
             running_total = SUM(amount) OVER 
                                 (ORDER BY [S.no]
                                  ROWS BETWEEN UNBOUNDED PRECEDING
                                           AND CURRENT ROW)
      FROM tableA
    ),
  rtb AS
    ( SELECT trxn_dt, id,
             running_total = SUM(paid_amt) OVER 
                                 (ORDER BY trxn_dt, id
                                  ROWS BETWEEN UNBOUNDED PRECEDING
                                           AND CURRENT ROW)
      FROM tableB
    )
SELECT
    a.[S.no], a.amount, b.trxn_dt
FROM rta AS a
  OUTER APPLY 
    ( SELECT TOP (1) b.trxn_dt
      FROM rtb AS b
      WHERE a.running_total <= b.running_total
      ORDER BY b.running_total, b.trxn_dt, b.id
    ) AS b ;

rextester.com测试。

票数 2
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/159235

复制
相关文章

相似问题

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