- 论坛徽章:
- 0
|
SELECT * FROM ABC
UNION ALL
SELECT A,SUM_B,NEW_C,0 FROM
(SELECT A,NEW_C,SUM(B) SUM_B FROM
(SELECT BBB.A, BBB.B,
CASE BBB.D WHEN -1 THEN BBB.C ELSE COALESCE((SELECT MIN(AAA.C) FROM ABC AAA WHERE AAA.D = -1 AND AAA.C >BBB.C),BBB.C) END NEW_C,
BBB.D
FROM ABC BBB)TEMP_TABLE
GROUP BY A,NEW_C) TEMP_TABLE2
ORDER BY C, D DESC
得到:
AA -30 2004-02-19 00:00:00.000 0
AA -30 2004-02-19 00:00:00.000 -1
AA 10 2005-01-01 00:00:00.000 1
AA 10 2005-01-03 00:00:00.000 1
AA 10 2005-01-05 00:00:00.000 1
AA 0 2005-01-09 00:00:00.000 0
AA -30 2005-01-09 00:00:00.000 -1
AA 10 2005-02-03 00:00:00.000 1
AA 10 2005-02-05 00:00:00.000 1
AA -10 2005-02-09 00:00:00.000 0
AA -30 2005-02-09 00:00:00.000 -1
AA 10 2005-02-13 00:00:00.000 1
AA 10 2005-02-13 00:00:00.000 0
AA 10 2005-02-15 00:00:00.000 1
AA 10 2005-02-15 00:00:00.000 0 |
|