2013-07-12 52 views
0

我在SAP B1中列出了一周中销售额的SQL查询。我也有一个查询,使这些相同的销售总和。我如何组合查询,以便结果是销售额的所有行,并且在这些行下面显示的总和为一行?SQL列表和总和

SQL查询 - 列出

SELECT T0.[DocNum], T0.[DocDate], 
     T1.[CardName], T1.[CardFName], T0.[DocTotalSy] AS Total 
    FROM ORDR T0 
    INNER JOIN OCRD T1 
    ON T0.CardCode = T1.CardCode 
    WHERE T0.[DocDate] > (SELECT CONVERT(varchar(10), DATEADD(day, -6, GETDATE()), 101)) 

SQL查询 - 琛

SELECT SUM (T0.[DocTotalSy]) AS Total 
    FROM ORDR T0 
    INNER JOIN OCRD T1 
    ON T0.CardCode = T1.CardCode 
    WHERE T0.[DocDate] > (SELECT CONVERT(varchar(10), DATEADD(day, -6, GETDATE()), 101)) 

回答

1

我想你想的group by with rollup声明(描述here):

SELECT T0.[DocNum], T0.[DocDate], T1.[CardName], T1.[CardFName], sum(T0.[DocTotalSy]) AS Total 
FROM ORDR T0 INNER JOIN 
    OCRD T1 
    ON T0.CardCode = T1.CardCode 
WHERE T0.[DocDate] > (SELECT CONVERT(varchar(10), DATEADD(day, -6, GETDATE()), 101)) 
group by T0.[DocNum], T0.[DocDate], T1.[CardName], T1.[CardFName] with rollup 

然而,这可能不是正是你想要的。我可以看到,rollupgrouping sets都适用于您的查询,但很难准确确定哪些内容会生成您想要的内容。样本结果总是有助于有效沟通。

0

您可以在现有的第一查询添加的总和,然后通过使用组:

SELECT T0.[DocNum], T0.[DocDate], T1.[CardName], T1.[CardFName], T0.[DocTotalSy] AS Total, sum(T0.[DocTotalSy]) AS SumTotal 
FROM ORDR T0 INNER JOIN 
    OCRD T1 
    ON T0.CardCode = T1.CardCode 
WHERE T0.[DocDate] > (SELECT CONVERT(varchar(10), DATEADD(day, -6, GETDATE()), 101)) 
group by T0.[DocNum], T0.[DocDate], T1.[CardName], T1.[CardFName]