2013-07-06 75 views
0

我有一個發票與不同的發票表。每個發票都有唯一的發票號碼和金額值。發票有兩種類型。一個是Invoice Type,另一個是Settled Type。如果創建了發票,表格中的條目將是發票類型,金額將爲正數。如果用戶支付了該發票,則具有相同發票編號的另一個條目將被輸入到該表格中,但是由於用戶已經支付了該數額,所以具有負值。如果記錄存在類似的唯一鍵,然後顯示那裏總結其他顯示記錄值

現在我想要顯示記錄是否存在任意兩張具有相同發票編號的記錄,然後通過計算金額總和(即添加發票類型記錄金額和結算類型記錄) 。那些具有唯一發票號碼(沒有結算記錄)的記錄應該按原樣顯示(沒有總和)。

我想查詢會出現一些這種..什麼的,但是這不正是我想要的!

Select 
    InvoiceNumber, InvoiceTypeCode, 
    Amount = case when COUNT(InvoiceNumber) > 1 
        then SUM(Amount) 
        else Amount 
      end 
from 
    Invoice 
group by 
    InvoiceNumber, Amount, InvoiceTypeCode 
+1

你爲什麼不* *總是顯示的總和?如果沒有兩個,但只有一個發票,這將等於完全相同的事情,但它使事情變得更容易。畢竟,是不是背後有一個穩定的發票的負面量抵消了開放式發票的金額想法(複式簿記?)正是你總是可以依靠總結的數額,以獲得正確的平衡? – stakx

回答

5

您不需要區分不同情況,如果您有單個記錄,那麼總和與該值相同。

的數量和類型代碼,您should't組,那麼這兩個記錄有相同的發票編號將在不同的組。

select 
    InvoiceNumber, Amount = sum(Amount) 
from 
    Invoice 
group by 
    InvoiceNumber 
+0

謝謝@Guffa。真的,它看起來很簡單。我剛剛失去了主意,認爲這可能是由'Case'聲明完成的,現在我正在嘲笑我的自我。再一次感謝你!乾杯! :) – sohaiby