У меня есть следующие 2 набора данных:
Набор данных A
Item Location Date X Y
A USA Sep 10(Current Week) 10 10
A USA Sep 17 15 20
A USA Sep 24 10 5
A Canada Sep 10(Current Week) 0 4
A Canada Sep 17 6 0
A Canada Sep 24 13 15
B USA Sep 10(Current Week) 10 50
B USA Sep 17 5 15
B USA Sep 24 15 20
Набор данных B:
Item Location Z
A USA 15
A Canada 0
B USA 25
Мне нужен выходной набор данных следующим образом:
O/P
Item Location Date Final_Column
A USA Sep 10 15
A USA Sep 17 20
A USA Sep 24 15
A Canada Sep 10 4
A Canada Sep 17 0
A Canada Sep 24 2
B USA Sep 10 65
B USA Sep 17 75
B USA Sep 24 80
Расчет следующий:
For current week, Final Column = (Z - X) + Y ----> 1st week value
For 2nd week, Final Column = (1st week value - X) + Y ----> 2nd week value
For 3rd week, Final Column = (2nd week value - X) + Y ----> 3rd week value
и так далее...
Additionally, if value of Final Column < 0 then Final Column = 0.
Как достичь этого расчета в MySQL?
Заранее спасибо.
Попробуй это. Не уверен в синтаксисе.
select a.item, a.location, a.date,
@value = case when @item <> a.item or @location <> a.location then b.z - a.x + a.y
else
@value - a.x + a.y end final_column
from a inner join b on a.item = b.item and a.location = b.location,
(select @value := 0, @item := '', @location := '') x
order by a.item, a.location, a.date
Ниже 0 будет выводиться как 0:
select a.item, a.location, a.date,
@value = case when @item <> a.item or @location <> a.location then b.z - a.x + a.y
else
@value - a.x + a.y end temp_column,
@value = case when @value < 0 then 0 else @value end final_column
from a inner join b on a.item = b.item and a.location = b.location,
(select @value := 0, @item := '', @location := '') x
order by a.item, a.location, a.date
Скажите мне, если проблема с колонкой temp.