インポート/エクスポートウィザードを使用して、CSVファイルをSQL Serverにインポートしています。 CSVファイルのデータは次のようになります。
...0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,164051.00,...
これらの値はすべて金額です。これはパッケージ化された金融ソフトウェア(正確にはJD Edwards 9.2)であるため、すべての列のデータ型をFLOATにする必要があります。変更することはできません。
ウィザードを使用してインポートした後、テーブルの列にはそれぞれ0
と164051
があります。
事前にパッケージ化されたJDEファイナンスレポートを実行すると、値として0
および1640.51
が含まれます。つまり、最後の2桁が「セント」として解釈され、それに対して私ができることは何もありません。値が0
であれば問題はありませんが、それ以外のすべての問題です。
したがって、私の唯一のオプションは、インポート後に列の値に2つの後続ゼロを追加することです。これを行う方法はありますか?
ドルの金額がCSVファイルで16578.98
の場合、正常にインポートされ、レポートに正しく表示されます。問題は、ドルの金額または5.80
や6.10
のような金額でのみ発生します。
何か案は?
データがこのJDEdwardsレポートにのみ使用されている場合は、単純にドル(164051、0、16578.98)からセント(100を掛ける)(16405100、0、1657898)に変換できます。
他の場所でデータが正しい形式で適切に使用されている場合は、ドルからセントに変換するビューを作成し、JDEレポートでそのビューを使用します。
小数セント($ 12358.9275)を受け取った場合は、端数部分を削除するために四捨五入する必要があります。しかし、私はそれが今問題になると信じています(あなたが言っていることから、それは$ 1235892.75として報告されます)。
「現状のまま」のデータをステージングテーブルにインポートし、データを最終的な宛先テーブルに検証/変換するために使用できるストアドプロシージャを用意することをお勧めします。そうすれば、「CAST/Convert/LEFT/RIGHT/etc。」のすべてを処理できます。機能します。
その特定の変換では、これはうまくいくはずです:
CAST([YourColumnHere] AS DECIMAL(18,2))
例:
SELECT
CAST('18.40' AS FLOAT) FloatExample
,CAST(CAST('18.40' AS FLOAT) AS DECIMAL(18,2)) AS DecimalExample
FloatExample DecimalExample
------------ --------------
18.4 18.40