簡體   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