METHOD executar BY DATABASE FUNCTION FOR HDB LANGUAGE SQLSCRIPT OPTIONS
READ-ONLY USING I_CreditDecisionDocAttrib
c_outbdelivprocfloW
i_salesdocument
i_salesdocumentitem
i_salesdocitempricingelement.
it_creddec = select client,
caseuuid as Id,
CreditDecisionObjectType as DecType,
CreditDecisionSalesDocument as DecDoc
from I_CreditDecisionDocAttrib as _CredDec
where client = session_context('CLIENT');
it_condPag = SELECT _CredDec.client as Client,
_CredDec.Id as Id,
_SalesOrder.salesdocument as SalesDocument,
_SalesOrder.CustomerPaymentTerms as CondPag,
rank ( ) over ( partition by client, _CredDec.Id order by _CredDec.Id desc ) as rank
from :it_creddec as _CredDec
inner join i_salesdocument as _SalesOrder
on _SalesOrder.salesdocument = _CredDec.DecDoc
where _CredDec.DecType = 'VBAK'
UNION ALL
SELECT _CredDec.client as Client,
_CredDec.Id as Id,
_SalesOrder.salesdocument as SalesDocument,
_SalesOrder.CustomerPaymentTerms as CondPag,
rank ( ) over ( partition by client, _CredDec.Id order by _CredDec.Id desc ) as rank
from :it_creddec as _CredDec
inner join c_outbdelivprocflow as _Outb
on _Outb.outbounddelivery = _CredDec.DecDoc
inner join i_salesdocument as _SalesOrder
on _SalesOrder.salesdocument = _Outb.precedingdocument
and precedingdocumentcategory = 'C'
where _CredDec.DecType = 'LIKP'
and EXISTS ( SELECT * FROM i_salesdocumentitem
WHERE salesdocument = _Outb.PrecedingDocument
and sddocumentrejectionstatus <> 'C' );
RETURN select Client,
Id,
CondPag,
_CondPag.SalesDocument,
sum( _Pricing.conditionamount ) as ValorTotal
from :it_condPag as _CondPag
left outer join i_salesdocitempricingelement as _Pricing
on _Pricing.salesdocument = _CondPag.salesdocument
and _Pricing.conditiontype = 'ZTOT'
where rank = 1
GROUP BY _CondPag.Client, _CondPag.Id, _CondPag.CondPag, _CondPag.SalesDocument;
endmethod.
READ-ONLY USING I_CreditDecisionDocAttrib
c_outbdelivprocfloW
i_salesdocument
i_salesdocumentitem
i_salesdocitempricingelement.
it_creddec = select client,
caseuuid as Id,
CreditDecisionObjectType as DecType,
CreditDecisionSalesDocument as DecDoc
from I_CreditDecisionDocAttrib as _CredDec
where client = session_context('CLIENT');
it_condPag = SELECT _CredDec.client as Client,
_CredDec.Id as Id,
_SalesOrder.salesdocument as SalesDocument,
_SalesOrder.CustomerPaymentTerms as CondPag,
rank ( ) over ( partition by client, _CredDec.Id order by _CredDec.Id desc ) as rank
from :it_creddec as _CredDec
inner join i_salesdocument as _SalesOrder
on _SalesOrder.salesdocument = _CredDec.DecDoc
where _CredDec.DecType = 'VBAK'
UNION ALL
SELECT _CredDec.client as Client,
_CredDec.Id as Id,
_SalesOrder.salesdocument as SalesDocument,
_SalesOrder.CustomerPaymentTerms as CondPag,
rank ( ) over ( partition by client, _CredDec.Id order by _CredDec.Id desc ) as rank
from :it_creddec as _CredDec
inner join c_outbdelivprocflow as _Outb
on _Outb.outbounddelivery = _CredDec.DecDoc
inner join i_salesdocument as _SalesOrder
on _SalesOrder.salesdocument = _Outb.precedingdocument
and precedingdocumentcategory = 'C'
where _CredDec.DecType = 'LIKP'
and EXISTS ( SELECT * FROM i_salesdocumentitem
WHERE salesdocument = _Outb.PrecedingDocument
and sddocumentrejectionstatus <> 'C' );
RETURN select Client,
Id,
CondPag,
_CondPag.SalesDocument,
sum( _Pricing.conditionamount ) as ValorTotal
from :it_condPag as _CondPag
left outer join i_salesdocitempricingelement as _Pricing
on _Pricing.salesdocument = _CondPag.salesdocument
and _Pricing.conditiontype = 'ZTOT'
where rank = 1
GROUP BY _CondPag.Client, _CondPag.Id, _CondPag.CondPag, _CondPag.SalesDocument;
endmethod.
===============================
Teve 1 vez q o rank não funcionou e usei o ROW_NUMBER, a sintaxe é parecida
t_main = select z.mandt,
z.product_id,
z.product_name,
LTRIM( z.product_quantity, '0' ) as product_quantity,
LTRIM( z.purchase_price, '0' ) as purchase_price,
LTRIM( z.selling_price, '0' ) as selling_price,
z.production_start_date,
z.production_end_date,
ROW_NUMBER ( ) OVER( PARTITION BY "PRODUCT_QUANTITY" ) AS "ROW_NUMBER_PARTION_BY"
from zdm_products_iy as z
where z.mandt = clnt;
Nenhum comentário:
Postar um comentário