SQL Server: сумма и умножение на 2 таблицы - PullRequest
1 голос
/ 15 марта 2019

Мне нужна помощь СУММАМ и НЕСКОЛЬКИМ при объединении 2 столов:

ТВ1

Tabel 1

ТВ2

Tabel 2

В tb1 мне нужно сумма QTY и , кратные SKU с PRICE без повторения того же SKU (21135208, 21035621 ):

Текущий запрос:

SELECT
    tb1.DOC_NO,
    CAST(SUM(tb2.QTY) AS FLOAT) AS QTY_TOTAL,
    ROUND(CAST(SUM(tb2.QTY * tb2.PRICE) AS FLOAT), 2) AS PRICE_TOTAL,
    tb1.DATE,
    tb1.STATUS_A,
    tb2.STATUS_B 
FROM
    tb1
INNER JOIN 
    tb2 ON tb1.DOC_NO = tb2.DOC_NO
WHERE
    tb1.STATUS_B = '0'
GROUP BY
    tb1.DOC_NO, tb1.DATE,
    tb1.STATUS_A, tb1.STATUS_B 
ORDER BY
    COH.DOC_NO_REQ_TO_ULI DESC

Мой результат:

enter image description here

Ожидаемый результат:

enter image description here

1 Ответ

2 голосов
/ 15 марта 2019

Я считаю, что вы можете отфильтровать дубликаты, используя подзапрос, такой как SELECT DISTINCT ... FROM tb1, оставив остальную часть запроса без изменений:

SELECT
    tb0.DOC_NO,
    CAST ( SUM ( tb2.QTY ) AS FLOAT ) AS QTY_TOTAL,
    ROUND( CAST ( SUM ( tb2.QTY * tb2.PRICE ) AS FLOAT ), 2) AS PRICE_TOTAL,
    tb0.DATE,
    tb2.STATUS_A,
    tb2.STATUS_B 
FROM
    (SELECT DISTINCT DOC_NO, CM, SKU, PRICE, QTY, DATE FROM tb1) AS tb0
    INNER JOIN tb2 ON tb0.DOC_NO = tb2.DOC_NO
WHERE
    tb2.STATUS_B = '0'
GROUP BY
    tb0.DOC_NO,
    tb0.DATE,
    tb2.STATUS_A,
    tb2.STATUS_B 
ORDER BY
    COH.DOC_NO_REQ_TO_ULI DESC

Примечание: в псевдонимах таблиц есть некоторые проблемы.запрос:

  • столбцы STATUS_A или STATUS_B должны иметь префикс tb2, а не tb1 (я это исправил)
  • псевдоним COH, который используется впредложение ORDER BY нигде в запросе не объявлено (это синтаксическая ошибка)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...