0

私はこれに似たテーブルを持っています:

LocalAmount Firm_id Date    StoreCard_Id
1000        5532    46,545  14124
2000        5325    46,545  13124
30000       25235   46,545  14141
1500        2525    46,545  14214
2134        25235   46,545  14241
144150      2525    46,545  41441

そして、次のコードを使用して、1 年で localAmount を合計できます。

select sum(II2.LocalTAmountWithoutVAT) as "Celkem"
from IssuedInvoices2 II2
join IssuedInvoices II on II.id = II2.parent_id
join firms F on F.id = II.firm_id
left join StoreCards SC on II2.StoreCard_ID = SC.ID
left join ABI_StoreCardsWithMenu(sc.ID) SCWM on SCWM.OUT_StoreCard_ID = SC.id
where
     ib_decodedate_year(II.docdate$date) = EXTRACT(YEAR FROM CURRENT_DATE)
    and F.id = '@{_firmID}'
group by 
    out_menu1Text
order by
    out_menu1Text

しかし、同じことを 2 年間行い、この 2 つの SUMS を差し引く必要があります。1 つの SQL コードである必要があります。

問題の解釈が悪くて申し訳ありませんが、どのように説明すればよいかわかりません。すべての返信のためのThx。

4

1 に答える 1

3

条件付き集計を使用してこれを行うことができます。

select sum(case when ib_decodedate_year(II.docdate$date) = EXTRACT(YEAR FROM CURRENT_DATE) 
                then II2.LocalTAmountWithoutVAT
                else 0
           end) as ThisYear,
       sum(case when ib_decodedate_year(II.docdate$date) = EXTRACT(YEAR FROM CURRENT_DATE) - 1
                then II2.LocalTAmountWithoutVAT
                else 0
           end) as LastYear,
       (sum(case when ib_decodedate_year(II.docdate$date) = EXTRACT(YEAR FROM CURRENT_DATE) 
                 then II2.LocalTAmountWithoutVAT
                 else 0
            end) -
        sum(case when ib_decodedate_year(II.docdate$date) = EXTRACT(YEAR FROM CURRENT_DATE) - 1
                then II2.LocalTAmountWithoutVAT
                else 0
           end)
       ) as Diff       
from IssuedInvoices2 II2 join
     IssuedInvoices II
     on II.id = II2.parent_id join
     firms F
     on F.id = II.firm_id left join
     StoreCards SC on II2.StoreCard_ID = SC.ID left join
     ABI_StoreCardsWithMenu(sc.ID) SCWM
     on SCWM.OUT_StoreCard_ID = SC.id
where F.id = '@{_firmID}'
group by  out_menu1Text
order by out_menu1Text;
于 2013-06-06T18:01:08.723 に答える