【发布时间】:2016-06-24 07:57:40
【问题描述】:
我有一张订单表格,如下所示:
t1
+-----------+---------+------------+
| client ID | order q | order date |
+-----------+---------+------------+
| 01 | 100 | 01-02-2016 |
| 01 | 350 | 03-05-2016 |
+-----------+---------+------------+
我还有第二张销售表:
t2
+-----------+-------+------------+
| client ID | sales | sales date |
+-----------+-------+------------+
| 01 | 50 | 03-02-2016 |
| 01 | 50 | 10-02-2016 |
| 01 | 300 | 04-05-2016 |
| 01 | 50 | 15-05-201 |
+-----------+-------+------------+
目标是获得SUM 的销售额比第一个订单日期多,比第二个订单日期少:
结果
+-----------+---------+-------+
| cliend ID | order q | sales |
+-----------+---------+-------+
| 01 | 100 | 100 |
| 01 | 350 | 350 |
+-----------+---------+-------+
第一个想法是让订单日期评级像
DENSE_RANK() OVER(PARTITION BY [client ID] ORDER BY [order date] ASC) AS R
然后做这样的事情:
select
client ID,
order q,
sum (sales) as sales
from
t2
left outer join
t2.client ID = t1.client ID
where
[sales date] >= [order date]
and [sales date] <= [order date] in (select [order date]
from t2
where (R < (R+1)))
group by
client ID, order q
我知道这是错误的,但这是我脑海中的逻辑。
你能给我一些想法吗?
【问题讨论】:
-
请同时提供测试数据
标签: sql sql-server date sum