-1

#ClaimsTemp3 という名前の一時テーブルに、AMTPAY、YMDPAID、CARRIER、PAYTO、DIVISION_NBR、AMTPAY2、および YMDPAID2 の 5 つのフィールドがあります。

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 の数値に達したとき (マイナスではなくプラスを除く) を報告する必要があります。したがって、CARRIER 04 と DIVISION 123456 の AMTPAY2 が 300 に達したら、その記録を示す必要があります。これの微妙な違いは、たとえば (上記の例では) 20120204 に 250 の AMTPAY2 があったなど、完全に一致しない可能性があることです。今、その週 (YMDPAID2) だけのクエリでそれを確認したいと思います。 、マイナス残高に達したか、それを超えたとき。

どんな助けでも大歓迎です。ありがとう!

4

1 に答える 1

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
于 2013-05-23T20:06:31.233 に答える