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表达式。CASE假设您使用的是 SQL 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 回答