繁体   English   中英

SQL Server:对 2 个表进行求和和相乘

[英]SQL Server : sum and multiplies on 2 tables

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

tb1

表 1

tb2

表 2

tb1 ,我需要总结QTY倍数SKUPRICE而不重复相同SKU2113520821035621 ):

当前查询:

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

我的结果是:

在此处输入图片说明

预期结果是:

在此处输入图片说明

我相信您可以通过使用像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 (我修复了)
  • ORDER BY子句中使用的别名COH未在查询中的任何位置声明(这是语法错误)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM