22,209
社区成员
发帖
与我相关
我的任务
分享
DECLARE @t TABLE( 客户 varchar(10), 起始日 date, 到期日 date, 交易量 int);
INSERT @t VALUES
('A', '2017-6-12', '2017-08-13', 30),
('A', '2017-7-05', '2017-12-12', 100),
('B', '2017-7-07', '2018-01-03', 50),
('A', '2017-8-05', '2018-08-05', 70);
SELECT * FROM(
SELECT *, ROW_NUMBER()OVER(PARTITION BY RQ.客户 ORDER BY S.v DESC, RQ.日期) as _r
FROM(
SELECT 客户, 起始日 as 日期 FROM @t
UNION
SELECT 客户, 到期日 as 日期 FROM @t
) RQ
CROSS APPLY(
SELECT SUM(交易量) FROM @t DATA
WHERE DATA.客户 = RQ.客户
AND RQ.日期 BETWEEN DATA.起始日 AND DATA.到期日
) S(v)
WHERE RQ.日期 >= '2017-1-1' AND RQ.日期 < '2018-1-1'
) RE WHERE _r = 1