0

変換する CSV があります。データを自分のスキーマに変換するのは少し問題があります。エンド テーブルに locationID があり、CSV では、約 10 列に 1 または NULL があります (それぞれが異なる場所です)。

私の論理は次のとおりです。 column("locationThree") == 1 の場合、locationID を 5 に設定します (たとえば)

SQL でこれを行う方法がわかりません。Pentaho でこれを行うためのツールはありますか、または SQL でこれを行うにはどうすればよいですか?

例えば

INSERT INTO endTable(locationID)
SELECT * FROM grubbyCSVData
if(locationOne == "1")
 locationID = 5;
if(locationTwo == "1")
 locationID = 6;

そのようなことは可能ですか?

4

1 に答える 1

1

SQLでCOALESCEand式を組み合わせてみてください。CASESQL Server を使用していると仮定すると、次のようなものが機能する可能性があります。ブラウザで書いたばかりなので、これが正しく実行されることは確認していません。

INSERT INTO endTable(locationID)
SELECT COALESCE( CASE locationOne
                 WHEN 1 THEN 5
                 ELSE NULL
                 END,
                 CASE locationTwo
                 WHEN 1 THEN 6
                 ELSE NULL
                 END
                );

または、SQL Server 2005 以降で使用できるPIVOTandUNPIVOTステートメントを調べることもできます。

于 2012-05-23T19:58:31.340 に答える