あなたはHANAデシベルSQLScript以下を確認してくださいでした
私はEUR に各通貨変換のための最新のエントリを取得し、VBAKテーブルにこのCTEテーブル(最後の1 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;
こんにちはアーニー、の上など、乗算や除算を使用して、それを扱うことができると思います2番目のコメントによると、私はTCURRテーブルからNULLのレコードがあり、私はそれはあなたのデータベース上で動作するかどう幸せになると、あなたのフィードバック
を得るでしょう
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
を次のようにSQLScriptビットを照会変更しました通貨レートの入力がないか、文書通貨がすでにEURと定義されているため(実際にはレートは1に等しいはずです)
良い日Eralper!本当にありがとうございます - それは100%働いた。ワオ!!とても有難い。私は今使用のためにカスタマイズしますが、原則は健全です! –
おはようございます。私はHANAとSQLの両方であなたのコードを試してみましたが、それは動作しますが、私の問題は100%解決できません。実際の問題は、為替レートをSO日付に等しいかそれ以下に戻すことです(為替レートはできるだけ近く、SO日付まで小さくします)。しかし、ありがとう - あなたのコードは私にいくつかの方向を与える。 –
こんにちはアーニー、私は2番目のクエリを追加しました。あなたもそれをチェックしてください。 – Eralper