2012-05-18 37 views
0

我有一個要轉換的CSV。將數據轉換爲我的模式是有點問題。 我在我的結束表中有一個位置ID,在CSV中,有大約10列中有1個或NULL(每個都是不同的位置)。將convertin CSV的ETL Pentaho建議(或SQL建議)轉換爲此表格格式

我的邏輯是:如果列(「locationThree」)== 1,然後設置locationID 5(例如)

我無法弄清楚如何在SQL做到這一點,是有一個工具這在Pentaho中,或者我怎麼能在SQL中做到這一點?

E.G

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

是類似的東西可能嗎?

+0

糾正我,如果我錯了,所以locationID是相對於每列? –

回答

1

您可能想嘗試在SQL中結合使用COALESCECASE表達式。假設你正在使用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 
       ); 

另外,你可能想看看進入PIVOT and UNPIVOT報表時在SQL Server 2005起可用。