[英]SQL Server : sum and multiplies on 2 tables
我需要帮助 SUM 和 MULTIPLIES 连接 2 个表:
tb1
tb2
在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
我的结果是:
预期结果是:
我相信您可以通过使用像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
(我修复了)ORDER BY
子句中使用的别名COH
未在查询中的任何位置声明(这是语法错误)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.