2017-02-09 95 views
0

讓我首先說我不是SQL編碼方面的專家。我以爲我有這個查詢,直到我把它放入SSRS,並注意到我的'消費'是幾乎所有情況下的價值翻倍。我無法弄清楚什麼是錯的。我改變了連接,但從來沒有得到預期的結果。這是查詢。SQL語句未返回預期的確切結果

SELECT a.No_ 
     ,Sum(b.Consumption) as Consumption 
     ,sum(c.[Item Ledger Entry Quantity]) as 'Total Qty' 
     ,sum(e.Amount) as 'Total Amount' 
FROM Crest$Item a 
INNER JOIN (SELECT [Item No_] INo, Sum(Quantity) Consumption 
        FROM   [Crest$Item Ledger Entry] 
        WHERE  [Entry Type] = 5 and [Posting Date]  Between '2017-01-01' and '2017-01-31' 
        GROUP BY [Item No_]) b on a.No_ = b.INo 
INNER JOIN [Crest$Value Entry] c ON a.No_ = c.[Item No_] 
INNER JOIN [Crest$G_L - Item Ledger Relation] d on c.[Entry No_] = d.[Value Entry No_] 
INNER JOIN [Crest$G_L Entry] e ON d.[G_L Entry No_] = e.[Entry No_] 
WHERE e.[G_L Account No_] = '55130' 
     and c.[Posting Date] between '2017-01-01' and '2017-01-31' 
group by a.No_ 
order by a.No_ 

當返回的數據我已經在列的正確數據NO_,總數量和總金額,但第二列「消費」是更多的時間比沒有它應該是值完全一倍。

我沒有看到問題。 謝謝。

+0

似乎消費總和乘以外部查詢的行數。一些休息表或在消費領域使用分組在外部查詢而不是重複使用總和 – niktrs

+0

您正在使用哪些DBMS? –

+0

Microsoft SQL Server 2014 – mdebner

回答

0

如果您刪除所有sum(...)函數並返回原始數據並檢查它,問題的原因可能會變得明顯。

如果沒有原始數據或模式,我最好的猜測就是,對於所有那些你得到的條件,你最終返回2的「b」基於連接到「c」,「d」或「 e「,這是你說」多次不是「,這讓我覺得這是怎麼回事

修復它完全取決於問題所在,有時候可能很簡單(也許你只需要得到「c」,其中某列與特定值相等),或者需要退後一步,看看它是如何結合在一起的