sql查询中的总和聚合

sql查询中的总和聚合,sql,tsql,sql-server-2008-r2,Sql,Tsql,Sql Server 2008 R2,如何在当前查询中求和或添加(数量的PDetail.DETAIL_) 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.S

如何在当前查询中求和或添加(数量的PDetail.DETAIL_)

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.PLU=PLU.PLU_NUM上的PDetail-internal-JOIN-PLU):

预期结果:

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

你可以这样做。总额(数量的详细信息)。然后对非唯一列使用分组方式。

根据对问题的评论,您只需要

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    

这就成功了:

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

您可以发布您想要的结果吗?请将其添加到您的答案中,以便对其进行格式化。因此,如果Item3在您的原始结果集中有两个不同的最后价格,您想要两行,还是两个价格的最大值?不,我只想添加PDetail.DETAIL_FOR_QTY列。价格不相关。如果它不相关,为什么要在结果集中返回它?如果要在结果集中返回它,则需要解释如何对其进行聚合。在select语句中,只需在聚合函数sum()中添加要求和的列。然后在最后为您使用的其余列添加GROUPBY子句。错误是什么?哦,等等,我把“最后的价格”放错桌子了。请立即尝试。SQL执行错误。{statement}无法调用varchar.com上的方法。但必须有一个错误消息从SQLServer返回。在将SQL嵌入应用程序之前,是否可以尝试在ManagementStudio中运行SQL并在那里进行调试?是的,发现了一些其他语法错误。通过这些工作也很好。你能接受它,让这个问题成为“答案”吗?
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