Вычисление значения для текущей недели и изменение этого значения для последующих недель

0

У меня есть следующие 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?

Заранее спасибо.

  • 0
    Что ты уже испробовал???
Теги:

1 ответ

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 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.

  • 0
    Привет, это сработало. Но мне нужно иметь возможность перекодировать значения, которые падают ниже 0 до 0.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню