2013-06-21 25 views
1

如何在當前查詢上求和或添加(PDetail.DETAIL_FOR_QTY)?在sql查詢中求和aggerate

SELECT  PDetail.PLU, PDetail.DETAIL_FOR_QTY, PLU.PLU_DESC, PLU.LAST_PRICE 
FROM   PDetail INNER JOIN 
        PLU ON PDetail.PLU = PLU.PLU_NUM 
WHERE  (PDetail.DEPT = 26) AND (PDetail.StoreNumber IN (1, 2, 3, 4, 7, 8, 10, 12, 14, 16)) AND (PDetail.TIME_STAMP BETWEEN CONVERT(DATETIME, 
        '2013-06-20 00:00:00', 102) AND CONVERT(DATETIME, '2013-06-20 23:59:59', 102)) 
ORDER BY PLU.PLU_DESC 

目前,我得到的是這樣的:

08024401 1 item1 17.4900 
08048003 1 item2 22.9900 
08048004 1 item3 22.9900 
08048004 1 item3 22.9900 

我想加起來這兩個,因爲它們是相同的(基於PDetail INNER JOIN PLU ON PDetail.PLU = PLU。 PLU_NUM):

PDetail.PLU PDetail.DETAIL_FOR_QTY  PLU.PLU_DESC   Don't need to add this 
08048004  1         item3      22.9900 
08048004  1         item3      22.9900 

期望的結果:

08024401 1 item1 17.4900 
08048003 1 item2 22.9900 
08048004 2 item3 22.9900 
+0

能否請您發表您的預期效果? –

+0

請將它添加到您的答案,以便它被格式化。 –

+0

因此,如果Item3在您的原始結果中設置了兩次不同的最後價格,那麼您需要兩行還是兩個價格的最大值? –

回答

0

這並獲得成功:

SELECT  PDetail.PLU, SUM(PDetail.DETAIL_FOR_QTY) AS DETAIL_FOR_QTY, PLU.PLU_DESC,  PLU.LAST_PRICE 
FROM   PDetail INNER JOIN 
        PLU ON PDetail.PLU = PLU.PLU_NUM 
WHERE  (PDetail.DEPT = 26) AND (PDetail.StoreNumber IN (1, 2, 3, 4, 7, 8, 10, 12, 14, 16)) AND (PDetail.TIME_STAMP BETWEEN CONVERT(DATETIME, 
        '2013-06-20 00:00:00', 102) AND CONVERT(DATETIME, '2013-06-20 23:59:59', 102)) 
GROUP BY PDetail.PLU, PLU.PLU_DESC, PLU.LAST_PRICE, PDetail.DETAIL_FOR_QTY 
ORDER BY PLU.PLU_DESC, PDetail.PLU 
0

你可以這樣做。總和(PDetail.DETAIL_FOR_QTY)。然後使用Group By作爲非唯一列。

+0

不知道該怎麼做。在這方面。 – iDev

+0

在您的select語句中,只需將您想要求和的列添加到聚合函數sum()中即可。然後在最後爲您使用的其他列添加Group By子句。 – user1307540

2

基於該意見的問題,您只是想

select PDetail.PLU, 
     sum(DETAIL_FOR_QTRY) as [QUANTITY SUM], 
     PLU.PLU_Description, 
     MAX(PLU.Last_Price) 
FROM PDetail 
INNER JOIN PLU 
ON PDetail.PLU = PLU.PLU_NUM 
WHERE (PDetail.DEPT = 26) 
AND  (PDetail.StoreNumber IN (1, 2, 3, 4, 7, 8, 10, 12, 14, 16)) 
AND  (PDetail.TIME_STAMP BETWEEN 
           CONVERT(DATETIME,'2013-06-20 00:00:00', 102) 
          AND CONVERT(DATETIME, '2013-06-20 23:59:59', 102)) 
GROUP BY PDetail.PLU, PLU.PLU_Description  
+0

什麼是錯誤?等等,我把「LAST_PRICE」放在錯誤的桌子上。現在就試試。 –

+0

SQL執行錯誤。 {statement}不能在varchar上調用方法。 – iDev

+0

瞭解。但是必須有從SQL Server返回的錯誤消息。你可以嘗試在Management Studio中運行SQL並在那裏進行調試,然後將其嵌入到應用程序中? –