2012-07-23 30 views
0

可能重複:
Sum a column of a table based on another sum of a table和函數在SQL不工作

我從一個子選擇在SQL中已經總結出列總結出列,但它給了我同樣的作爲已加總列的值。 TotalAmount應該合計爲InvoiceTotal,但它只是複製相同的值。任何人都可以看到我做錯了什麼,或者如果有更好的方式去做這件事?

declare @ReportLines table 
    (RebateInvoiceID int, 
    RebateSetupID int , 
    ShortItemNo float primary key(RebateInvoiceID,RebateSetupID,ShortItemNo), 
    TotalAmount float, 
    InvoiceTotal float, 
    TotalQuantity int) 
insert @ReportLines 
select 
    Total.RebateInvoiceID 
, Total.ID 
, Total.ShortItemNo 
, Total.TotalAmount 
, sum(Total.TotalAmount) as InvoiceTotal 
, Total.TotalQuantity 
from 
(
select 
i.RebateInvoiceID 
,coalesce(rs.WholesalerRebateSetupID,r.RebateSetupID) as ID 
,bl.ShortItemNo 
, sum(round(r.Amount,2)) as TotalAmount 
, sum(r.Quantity) TotalQuantity 
from 
    @Invoices i 
    join RebateInvoices ri (nolock) on 
    ri.RebateInvoiceID=i.RebateInvoiceID 
    inner loop join Rebates r (nolock) on 
    r.RebateInvoiceID=i.RebateInvoiceID  
    join RebateSetup rs (nolock) on 
    rs.RebateSetupID=r.RebateSetupID 
    join BidLines bl (nolock) on 
    r.BidLineGuid=bl.BidLineGuid 
    join @Products p on 
    p.ShortItemNo=bl.ShortItemNo 
    left join ChargebackDetailHistory cd (nolock) on 
    r.DocumentBranchPlant = cd.DocumentBranchPlant 
    and r.DocumentNumber = cd.DocumentNumber 
    and r.DocumentType = cd.DocumentType 
    and r.LineNumber = cd.LineNumber 
    left join EDI.dbo.JDE_SaleDetail sd (nolock) on 
    r.DocumentBranchPlant = sd.BranchPlant 
    and r.DocumentNumber = sd.OrderNumber 
    and r.DocumentType = sd.OrderType 
    and r.LineNumber = sd.LineNumber 
where 
    cd.InvoiceDate between @BeginDate and @EndDate 
    or sd.InvoiceDate between @BeginDate and @EndDate 
group by 
    i.RebateInvoiceID 
, coalesce(rs.WholesalerRebateSetupID,r.RebateSetupID) 
, bl.ShortItemNo 
) Total 

group by 
total.rebateinvoiceid, 
total.ID, 
total.shortitemno, 
total.totalamount, 
total.totalquantity 
+1

如果您沒有得到第一個問題的答案,那麼請考慮將其編輯爲更清楚,而不是發佈完全相同的問題 – Taryn 2012-07-23 20:54:54

+0

@user ...嘗試在查詢結束時從組中刪除total.totalamount,然後從選擇....看看會發生什麼 – MikeTWebb 2012-07-23 20:56:00

回答

3

不要在您嘗試執行SUM的相同字段上進行分組。

+1

這正是我做錯了! – 2017-05-22 19:40:19

1

這是因爲你由TotalAmountTotalQuantity組成。按這些值分組是沒有意義的。由於剩餘的三個組字段與子選擇中的相同,因此您將獲得相同的行。爲了將多個子選擇的行統一到外部選擇的一行中,您必須通過較少的字段進行分組來獲得總和。

但在我看來,這個外部選擇根本沒有意義,爲什麼不單單使用內部選擇呢?