SQL Server:在2个表上求和并相乘

时间:2019-03-14 22:59:55

标签: sql sql-server

我需要连接2表上的SUM和MULTIPLIES的帮助:

tb1

Tabel 1

tb2

Tabel 2

tb1中,我需要求和 QTY倍数 SKUPRICE相同,而不必重复相同的{ {1}}(SKU21135208):

当前查询:

21035621

我的结果是:

enter image description here

预期结果是:

enter image description here

1 个答案:

答案 0 :(得分:2)

我相信您可以通过使用诸如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_ASTATUS_B的前缀应为tb2,而不是tb1(我已将其固定)
  • COH子句中使用的
  • 别名ORDER BY在查询的任何地方都没有声明(这是语法错误)