Столбец суммы и вычитания в одной таблице - PullRequest
0 голосов
/ 29 января 2019

У меня есть следующая таблица «TableOfDelivery» с 4 столбцами

enter image description here

Я разработал SQL-запрос (доступ 2016), чтобы получитьразница между 2 неделей доставки в 2 разных отчетных недель:

SELECT TOP 2 
 t1.ref, t1.[delivery week], 
 (t2.qty-t1.qty) AS 
QtyDifferenceBetween2DeliveryWeekOn2DifferentWeekReporting
FROM 
  TableOfDelivery AS t1 INNER JOIN TableOfDelivery AS t2 ON (t1.ref = t2.ref) 
AND 
  (t1.[delivery week] = t2.[delivery week]  AND (t1.[reporting week] <> t2. 
[reporting week]) )
GROUP BY t1.[reporting week], t1.ref, t1.[delivery week], t2.qty-t1.qty
ORDER BY t1.[reporting week];

вот результаты этого запроса SQL:

enter image description here

Результаты приемлемы только для тех недель доставки, которые соответствуют.Но я также хотел бы, чтобы недели доставки не совпадали, см. Рисунок, выделенный линиями, выделенными красным и зеленым цветом.

enter image description here

Например, для красной и зеленой линий я должен иметь в итоговом запросе также:

enter image description here

Есть ли еще кто-нибудь, чтобы сделать это?

Большое спасибо

Ответы [ 2 ]

0 голосов
/ 30 января 2019

Вы можете попытаться использовать CASE, чтобы получить то, что вы хотите.

SELECT t1.ref,
       t1.[delivery week],
       (t2.qty-t1.qty) AS QtyDiff,
       t1.[delivery week],
       CASE
           WHEN t1.[reporting week] <> t1.[delivery week] THEN t1.qty *-1
           ELSE t1.qty
       END AS new_qty
FROM TableOfDelivery AS t1
INNER JOIN TableOfDelivery AS t2 ON (t1.ref = t2.ref)
AND (t1.[delivery week] = t2.[delivery week]
     AND (t1.[reporting week] <> t2. [reporting week]))
GROUP BY t1.[reporting week],
         t1.ref,
         t1.[delivery week], (t2.qty-t1.qty),t1.qty
ORDER BY t1.[reporting week];

CASE проверяет, есть ли разница между неделей доставки и отчетной неделей.Если это так, то вы получите количество * -1.

Я протестировал его на postgres, но не на msaccess, так как у меня нет этой базы данных на моем компьютере.

0 голосов
/ 29 января 2019

Когда я поворачиваю вышеупомянутые данные, это выглядит так.Какие результаты вам нужны.Пожалуйста, покажите нам.

            Deliv.Week-->               
Rptg.Week V                 
Sum of  qty Column Labels               
Row Labels  2019-35 2019-41 2019-43 2019-45 Grand Total
2018-37     20      30      50      30      130
2018-41     30                      30      60
Grand Total 50      30      50      60      190
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...