输入 -
Posting Date Amount in doc. curr.
2/28/2015 -679,407.79
3/17/2015 679,407.79
7/31/2014 -644,521.00
8/18/2015 644,521.00
8/30/2015 -153,144.88
输出 -
Posting Date Amount in doc. curr.
7/31/2014 -644,521.00
8/18/2015 644,521.00
8/30/2015 -153,144.88
在此示例中,虽然-644,521.00和644,521.00总和为零,但过帐日期(8/18 / 2015,7 / 31/2014)的差异超过90天,因此不应删除这些行。 -153,144.88是没有+ ve匹配的个人金额,所以这一行也不会被删除。
答案 0 :(得分:0)
试试这个
SELECT *
INTO #test
FROM (VALUES (Cast('2/28/2015' AS DATE),-679407.79),
(Cast('3/17/2015' AS DATE),679407.79),
(Cast('7/31/2014' AS DATE),-644521.00),
(Cast('8/18/2015' AS DATE),644521.00),
(Cast('8/30/2015' AS DATE),-153144.88) ) cs (p_date, amount);
WITH cte
AS (SELECT Max(p_date)OVER(partition BY Abs(amount)) mx_date,
Min(p_date)OVER(partition BY Abs(amount)) mn_date,
Sum(amount)OVER(partition BY Abs(amount)) AS s_amt,
*
FROM #test)
DELETE FROM cte
WHERE Datediff(dd, mn_date, mx_date) < 90
AND s_amt = 0