당신은 HANA DB SQLScript 다음 확인하십시오 수
내가 EUR 각 통화 변환에 대한 가장 최근의 항목을 얻을 그리고 VBAK 테이블이 CTE 테이블 (마지막 CTE3)에 가입하는
multiple SQL CTE expressions on HANA SQLScript을 사용
나는 실제로 환율을 사용하여 양의 convertion하지 않았다, 나는 당신이 SELECT 목록
with cte as (
select
to_date(to_nvarchar(99999999 - gdatu)) gdate,
*
from "SAPS4S".TCURR
where tcurr = 'EUR'
), cte2 as (
select
row_number() over (partition by fcurr, YEAR(gdate), MONTH(gdate) order by gdate desc) as rn,
YEAR(gdate) as gdate_year,
MONTH(gdate) as gdate_month,
*
from cte
), cte3 as (
select * from cte2 where rn = 1
)
select
vbeln,
erdat,
netwr,
waerk,
cte3.*
from "SAPS4S".VBAK as vbak
left join cte3
on
vbak.waerk = cte3.fcurr and
YEAR(vbak.erdat) = cte3.gdate_year and
MONTH(vbak.erdat) = cte3.gdate_month;
안녕하세요 어니,,617에 등 곱셈이나 나눗셈을 사용하여 처리 할 수 있다고 생각는 두 번째 의견에 따르면, 나는
with cte as (
select
to_date(to_nvarchar(99999999 - gdatu)) gdate,
*
from "SAPABAP1".TCURR
where tcurr = 'EUR'
), cte2 as (
select
vbeln,
erdat,
netwr,
waerk,
sum(1) over (partition by vbeln order by gdate desc rows unbounded preceding) as rownum,
cte.*
from "SAPABAP1".VBAK as vbak
left join cte
on
vbak.waerk = cte.fcurr and
vbak.erdat >= cte.gdate
)
select *
from cte2
where ifnull(rownum,1) = 1
가 데이터베이스에서 작동하며
이 TCURR 테이블에서 오는 NULL 레코드가 의견을 얻을 수 있다면 행복 할 것을 다음과 같이 SQLScript 조금 쿼리 변경 환율이 입력되어 있지 않거나 문서 통화가 EUR로 정의되어 있기 때문에 (실제로 환율은 1과 같아야합니다.)
좋은 하루 Eralper! 고맙습니다. 100 % 효과가있었습니다. 와우!! 매우 감사. 내 사용을 위해 사용자화할 예정이지만 원리는 확실합니다! –
안녕하세요. Eralper. 나는 HANA와 SQL 모두에서 코드를 시험해 보았지만 작동하지만 100 % 문제를 해결하지 못했습니다. 진짜 문제는 환율을 소 환율과 동등하거나 그 이하로 돌려주는 것입니다 (환율은 가능한 한 가깝고 환율은 소 환율과 비슷합니다). 하지만 고마워요. 코드가 제게 어떤 방향을 제시합니다. –
안녕하세요 어니, 두 번째 쿼리를 추가했습니다. 다시 확인해주세요. – Eralper