Just nu i M3-nätverket
Gå till innehåll

Dubbla resultatrader PLSQL


Nuggit

Rekommendera Poster

Hej, har ett problem jag har klurat på väldigt länge nu...

 

Jag en databasvy som ser ut som följande:

select a.company,
          a.voucher_date, 
          a.voucher_type,
          a.voucher_no, 
          a.row_no, 
          a.account,
          a.account_desc, 
          a.code_b, 
          a.code_b_desc,
          a.code_c, 
          a.code_d, 
          a.amount, 
          a.text, 
          a.reference_serie, 
          a.reference_number,
         d.cf$_other_funding
from jdifs.gen_led_voucher_row_union_qry a, jdifs.customer_order c ,
jdifs.customer_order_cft d
where a.account in ( select b.code_part_value
                        from jdifs.accounting_attribute_con b
                        where b.company = a.company
                        and b.code_part = 'A'
                        and b.attribute = 'SAMEPR'
                        and b.attribute_value = 'YES')
 and a.code_d= c.order_no(+)
 and c.objkey = d.rowkey(+)

Problemet jag har är att i kolumnen a.code_d där finns något som ofta är = c.order_no MEN inte alltid.
Men denna vy får till synes rätt resultat.

 

Problemet är att det senare är en rapport som läser denna vy.

Den rapporten ser ut såhär: 

select to_char(a.voucher_date,'YYYY-MM-DD') "VOUCHER DATE", a.voucher_type "VOUCHER TYPE", a.voucher_no "VOUCHER_NO", a.row_no "ROW NO", a.account "ACCOUNT", a.account_desc "ACCOUNT DESC", a.code_b "COST CENTER", a.code_b_desc "COST CENTER DESC",
         a.code_c "PROD LINE", a.code_d "PROJECT ID", to_char(a.amount*(-1),'999G999G990D99','NLS_NUMERIC_CHARACTERS='', ''') "AMOUNT", a.text "TEXT", a.REFERENCE_SERIE "REF SERIE", a.REFERENCE_NUMBER "REF NUMBER", null "DIFFERENCE"
from ifsinfo.JD_SALES_MAN_PROJECT_REP a
where a.company = '2J'
and upper(a.code_d) = upper('&PROJECT_ID')
union
select ' ' "VOUCHER DATE", null "VOUCHER TYPE", null "VOUCHER_NO", null "ROW NO", null "ACCOUNT", null "ACCOUNT DESC", null "COST CENTER", null "COST CENTER DESC",
         null "PROD LINE", a.code_d "PROJECT ID", to_char(sum(a.amount*(-1)),'999G999G990D99','NLS_NUMERIC_CHARACTERS='', ''') "AMOUNT", 'Actual margin / Estimated margin' "TEXT", to_char(a.cf$_other_funding,'999G999G990D99','NLS_NUMERIC_CHARACTERS='', ''')  "REF SERIE", to_char(sum(a.amount*(-1))-a.cf$_other_funding,'999G999G990D99','NLS_NUMERIC_CHARACTERS='', ''') "REF NUMBER",  'Difference' "DIFFERENCE"
from  ifsinfo.JD_SALES_MAN_PROJECT_REP a
where a.company = '2J'
and upper(a.code_d) = upper('&PROJECT_ID')
group by a.code_d, a.cf$_other_funding               
order by 1 desc, 2 asc, 3 desc

Där den sista unionen är det som genererar problemet... Idén med den är att visa en resultatrad som sista rad i rapporten.

Problemet är att den inte visar något värde i de fallen då a.code_d INTE är likadant som c.order_no i vyn överst.

Logiken då för att få ut rätt order är att för varje rad, ska kolumnen REF SERIE kollas,där den innehåller order CUST ORDER, då finns order nummret i REF NUMBER kolumnen.

 

MEN en c.order_no = a.ref_number går inte eftersom även raderna där ref serie INTE är cust order ska komma med...

 

Hoppas detta är begripligt... fråga gärna annars så förtydligar jag.

 

 

 

Länk till kommentar
Dela på andra webbplatser

Har försökt förtydliga detta lite, här är vyn med hur jag tänkt få ihop med kundordertabellen:

Detta resulterar i dubbla resultatrader som jag behöver få till 1 rad.

select a.company,
          a.voucher_date, 
          a.voucher_type,
          a.voucher_no, 
          a.row_no, 
          a.account,
          a.account_desc, 
          a.code_b, 
          a.code_b_desc,
          a.code_c, 
          a.code_d, 
          a.amount, 
          a.text, 
          a.reference_serie, 
          a.reference_number,
          (select d.cf$_other_funding from jdifs.customer_order c ,jdifs.customer_order_cft d where c.order_no = a.reference_number  and a.reference_serie='CUST ORDER' and c.objkey = d.rowkey) as cf$_other_funding  
from jdifs.gen_led_voucher_row_union_qry a
where a.account in ( select b.code_part_value
                        from jdifs.accounting_attribute_con b
                        where b.company = a.company
                        and b.code_part = 'A'
                        and b.attribute = 'SAMEPR'
                        and b.attribute_value = 'YES')          
Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...