ich eine Tabelle mit Aufträgen, die sind wie folgt aussehen:SQL Summe von Daten zwischen zwei Terminen in einer Spalte
t1
+-----------+---------+------------+
| client ID | order q | order date |
+-----------+---------+------------+
| 01 | 100 | 01-02-2016 |
| 01 | 350 | 03-05-2016 |
+-----------+---------+------------+
Und ich habe zweite Tabelle mit einem Umsatz:
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 |
+-----------+-------+------------+
Das Ziel ist es, SUM
des Umsatzes mehr als das erste Bestelldatum und weniger als das zweite Bestelldatum :
Ergebnis
+-----------+---------+-------+
| cliend ID | order q | sales |
+-----------+---------+-------+
| 01 | 100 | 100 |
| 01 | 350 | 350 |
+-----------+---------+-------+
Erste Idee ist es, Bestelldaten Bewertung wie
DENSE_RANK() OVER(PARTITION BY [client ID] ORDER BY [order date] ASC) AS R
dann etwas tun, wie dies zu machen:
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
Ich weiß, das ist falsch, aber das ist die Logik in meinem Kopf.
Können Sie mir bitte ein paar Ideen geben, wie das geht?
bitte auch Testdaten angeben – TheGameiswar