SQL汇总直到一列等于或大于其他列

时间:2013-05-23 20:00:28

标签: sql sql-server

我在一个名为#ClaimsTemp3的临时表中有五个字段: AMTPAY,YMDPAID,CARRIER,PAYTO,DIVISION_NBR,AMTPAY2和YMDPAID2

AMTPAY是一个负数。对于AMTPAY,YMDPAID,CARRIER,PAYTO和DIVISION_NBR的每个组合,有几行AMTPAY2和YMDPAID2:

AMTPAY  YMDPAID   CARRIER PAYTO   DIVISION  AMTPAY2 YMDPAID2   
-300    20120101    04    O900    123456    50      20120201

-300    20120101    04    O900    123456    25      20120202

-300    20120101    04    O900    123456    10      20120203

对于特定的DIVISION_NBR和PAYTO组合,我需要报告AMTPAY2的总和何时达到AMTPAY中的数字(除了正数而不是负数)。因此,当AMTPAY2达到300为CARRIER 04和DIVISION 123456时,我需要显示该记录。其中的细微差别也可能不是完全匹配,例如(在上面的示例中),在20120204上有一个250的AMTPAY2。现在我想在查询中看到它,仅在那一周(YMDPAID2) ,当它达到或超过负余额时。

非常感谢任何帮助。谢谢!

1 个答案:

答案 0 :(得分:0)

对AMTPAY和AMTPAY2字段尝试类似的操作:

SELECT SUM(TBLB.AMTPAY) AS Total,TBLB.YMDPAID FROM #ClaimsTemp3 AS TBLA 
INNER JOIN #ClaimsTemp3 AS TBLB ON (TBLA.YMDPAID=TBLB.YMDPAID)
WHERE TBLA.YMDPAID<=TBLB.YMDPAID

您应该能够弄清楚如何使用这些作为子查询来找出差异的位置。如果您需要我澄清,请告诉我:

SELECT T1.YMDPAID FROM (subquery1) AS T1 INNER JOIN (subquery2) AS T2 WHERE T1.Total-T2.Total>0