2015-07-02 27 views
3

我有這樣的查詢:如何獲得的多個記錄和一列

SELECT 
    TC.F_Exhibition_Name, 
    T.F_Exhibitor_Name, 
    TC.F_CreditNoteNo, 
    TC.F_Description, 
    TC.F_Price, 
    TC.F_Qty, 
    TC.F_CNqty, 
    TC.F_Totalamt 
FROM T_CreditNote TC 
LEFT JOIN T_Exhibitor T ON 
    T.F_Exhibitor_Name = TC.F_Exhibitor_Name 
WHERE TC.F_CreditNoteNo='CNINV100002' 

輸出看起來像這樣

---------------------------------------------------------------------------------------------------------------------------------------------------- 
F_Exhibition_Name F_Exhibitor_Name       F_CreditNoteNo F_Description F_Price  F_Qty  F_CNqty  F_Totalamt          
---------------------------------------------------------------------------------------------------------------------------------------------------- 
WORKSPACE 2015  AEP - Associacao Empresarial De Portugal CNINV100002  item1    12   5    8    96 
WORKSPACE 2015  AEP - Associacao Empresarial De Portugal CNINV100002  item2    25   12   10    250 

我想在最後與多加一個列[sum]總金額爲F_total。在我的情況下,我想顯示sum(250+96) = 346

我該怎麼做?

+0

在哪一行這筆錢將顯示聚合函數?因爲對於聚合,你將不得不使用組,並且通過分組將行合併爲一個 –

回答

5

使用SUM OVER()

select TC.F_Exhibition_Name, T.F_Exhibitor_Name, TC.F_CreditNoteNo, 
     TC.F_Description, TC.F_Price,TC.F_Qty, TC.F_CNqty, TC.F_Totalamt, 
     sum(TC.F_Totalamt) OVER() AS SumOfTotalamt 
from T_CreditNote TC 
LEFT JOIN T_Exhibitor T on T.F_Exhibitor_Name=TC.F_Exhibitor_Name 
where TC.F_CreditNoteNo='CNINV100002' 

SUM的窗口版本將返回兩行總結的F_Totalamt

+0

@jasbacker如果你的每個組添加了'F_CreditNoteNo',你可以在'SUM OVER()'中添加一個'Partition' 'SUM(TC.F_Totalamt)OVER(PARTITION BY F_CreditNoteNo)' – Eric

+0

@Eric由於'WHERE'子句,查詢只返回2行,因此這裏不需要'PARTITION BY'子句: 「SUM」適用於這兩行。 –

+0

@GiorgosBetsos是的你是對的,這只是一個建議,讓列邏輯獨立於where條件工作。 – Eric

3

您可以使用SUM()

SELECT 
    TC.F_Exhibition_Name, 
    T.F_Exhibitor_Name, 
    TC.F_CreditNoteNo, 
    TC.F_Description, 
    TC.F_Price, 
    TC.F_Qty, 
    TC.F_CNqty, 
    TC.F_Totalamt, 
    SUM(TC.F_Totalamt) as sum_amt 
FROM T_CreditNote TC 
LEFT JOIN T_Exhibitor T ON 
    T.F_Exhibitor_Name = TC.F_Exhibitor_Name 
WHERE TC.F_CreditNoteNo='CNINV100002' 
GROUP BY TC.F_Exhibition_Name, 
    T.F_Exhibitor_Name, 
    TC.F_CreditNoteNo, 
    TC.F_Description, 
    TC.F_Price, 
    TC.F_Qty, 
    TC.F_CNqty, 
    TC.F_Totalamt 
相關問題