2012-03-21 112 views
0

我有一個問題,我有這個查詢,我應該由PIX_SKU拉總計組。我的問題是,這是數量翻倍,任何幫助將不勝感激。總和運算符不工作的不同查詢?

SELECT DISTINCT(A2.PIX_SKU), A2.PIX_DATE, SUM(A1.ID_QTY) AS TOTAL 
FROM IDCASE00_EXTRACT A1,PX_CLEAN A2 
WHERE A1.ID_SKU = A2.PIX_SKU 
GROUP BY A2.PIX_SKU, A2.PIX_DATE 

這裏是表IDCASE00_EXTRACT一些數據

id_sku     id_ty  
301110 39 8    3266   
301110 39 8    1788   
301112 90 1    4   
301185 20 6    6580   
301185 20 6    22028  

這裏是表PX_CLEAN一些數據

pix_sku   pix_date 
301110 39 8  20120203 
301112 90 1  20120204 
301185 20 6  20120320 
301110 39 8  20120301 
301185 20 6  20120209 
+0

你可以分別用一些示例數據發佈兩個表嗎? – Teja 2012-03-21 01:39:56

+0

我可以看到以下問題與您的問題:1.您的數據示例只顯示一個表,但查詢引用兩個。 2.您已將問題標記爲與兩個不同的數據庫系統(MySQL和SQL Server)相關。這是故意的還是你錯誤地將mysql用於'mssql'? 3.您正在使用'DISTINCT',好像它可以應用於列,而不能。 「DISTINCT」總是適用於您要拖動的整行列。 – 2012-03-21 01:43:01

+0

Venk,我發佈了兩張表。 – jorame 2012-03-21 02:22:51

回答

5

你的加入是問題...

IDCASE00_EXTRACT,你有兩行id_sku = 301110 39 8

PX_CLEAN中,還有兩行,其中pix_sku = 301110 39 8

因此,當您加入id_sku = pix_sku時,您將生成4行(2 * 2)。

因此,連接兩個表的匹配目前不是唯一的 - IDCASE00_EXTRACT中的日期應該與PX_CLEAN中的pix_date匹配嗎?

+0

不,不幸的是,沒有日期在IDCASE00_EXTRACT – jorame 2012-03-21 17:54:57

2

該查詢應該讓你對每個SKU總數:

SELECT Q.ID_SKU, SUM(Q.ID_qty) AS TOTAL 
FROM IDCASE00_EXTRACT AS Q 
GROUP BY Q.ID_SKU 

你有什麼打算與pix_date辦?這些數據有什麼用途?

你可以得到,我能想到的唯一的其他信息是:

SELECT T.ID_SKU, T.TOTAL, PX.pix_date 
FROM 
    ( 
    SELECT Q.ID_SKU, SUM(Q.ID_qty) AS TOTAL 
    FROM IDCASE00_EXTRACT AS Q 
    GROUP BY Q.ID_SKU 
    ) 
    AS T JOIN PX_CLEAN AS PX ON (T.ID_SKU = PX.pix_sku) 

無論如何,你必須弄清楚你想要檢索的信息。

+0

我需要得到一個不同的結果爲PIX_SKU,我需要顯示PIX_SKU,PIX_DATE和SUM(ID_QTY)。希望澄清我需要的東西! – jorame 2012-03-21 17:53:00

0

這個查詢:

SELECT pix_sku, SUM(id_qty) AS QuantityTotal 
FROM @PX_CLEAN AS P 
    JOIN @IDCASE00_EXTRACT AS Q ON (Q.id_sku = P.pix_sku) 
GROUP BY pix_sku 

將得到這些結果:

  • SKU | 合計
  • 301110 39 8 | 10108
  • 301112 90 1 | 4
  • 301185 20 6 | 57216

對於每個SKU,您有一個總數。

你想從pix_date得到什麼?當您彙總時,您只有ONE SKU,但每個SKU仍有多個日期。你想要得到什麼?你想知道什麼?

你應該停止思考DISTINCT函數。此功能僅從查詢結果中刪除完全相同的。它只有在你得到你想要的結果時纔會有幫助 - 但是有多條線是相同的。查詢引擎不會「理解」您的願望,只需爲每個SKU返回1行,但只能通過聚合(group by)才能實現。