2012-12-12 35 views
0

我是Pentaho電水壺的新手。Pentaho電熱水壺 - 用空行生成Excel輸出

我需要使用表輸入步驟的結果集生成Microsoft Excel輸出。

我使用以下步驟在我的轉型

  1. 獲取系統數據 - 提供的日期範圍表中的數據檢索
  2. 表輸入 - SQL檢索根據日期表數據在前面的步驟中給出的範圍
  3. Excel輸出 - 用step2的結果集生成excel。

我的excel輸出在Column標題前應該有3個空行。所以我試圖使用聯合來生成空行,並使用sql構造列標題。但水壺不會應用字段上的格式,如果我選擇sql中的空行(所有字段值將被視爲字符串)。

有沒有辦法在列標題之前在excel輸出中生成空行,而不會影響我的結果集。

SELECT 
    '' AS 'Accounting Month', '' AS 'Insured Name','' AS 'Policy Number','' AS 'Company Name','' AS 'Line Of Business','' AS 'Transaction Type', '' AS 'Effective Date','' AS 'Rate','' AS 'Gross Premium','' AS 'Commission Amount', '' AS 'Expense Constant', '' AS 'Net Amount','' AS 'Payment Amount', 1 as ORDERS 
UNION ALL 

SELECT 
    '' AS 'Accounting Month', '' AS 'Insured Name','' AS 'Policy Number','' AS 'Company Name','' AS 'Line Of Business','' AS 'Transaction Type', '' AS 'Effective Date','' AS 'Rate','' AS 'Gross Premium','' AS 'Commission Amount', '' AS 'Expense Constant', '' AS 'Net Amount','' AS 'Payment Amount', 1 as ORDERS 
UNION ALL 

SELECT 
    '' AS 'Accounting Month', '' AS 'Insured Name','' AS 'Policy Number','' AS 'Company Name','' AS 'Line Of Business','' AS 'Transaction Type', '' AS 'Effective Date','' AS 'Rate','' AS 'Gross Premium','' AS 'Commission Amount', '' AS 'Expense Constant', '' AS 'Net Amount','' AS 'Payment Amount', 1 as ORDERS 
UNION ALL 


SELECT 
    '' AS 'Accounting Month', '' AS 'Insured Name','' AS 'Policy Number','' AS 'Company Name','' AS 'Line Of Business','' AS 'Transaction Type', '' AS 'Effective Date','' AS 'Rate','' AS 'Gross Premium','' AS 'Commission Amount', '' AS 'Expense Constant', '' AS 'Net Amount','' AS 'Payment Amount', 3 as ORDERS 
UNION ALL 

SELECT 
'Accounting Month', 
'Insured Name', 
'Policy Number', 
'Company Name', 
'Line Of Business', 
'Transaction Type', 
'Effective Date', 
'Rate', 
'Gross Premium', 
'Commission Amount', 
'Expense Constant', 
'Net Amount', 
'Payment Amount', 
2 ORDERS 

UNION ALL 

SELECT * FROM (
SELECT 
     CONCAT(ACCOUNT_YEAR,ACCOUNT_MONTH) AS 'Accounting Month', 
     INSURED_NAME AS 'Insured Name', 
     POLICY_NUMBER AS 'Policy Number', 
     COMPANY AS 'Company Name', 
     LINE_OF_BUSINESS AS 'Line Of Business', 
     TRANSACTION_DETAIL_TYPE 'Transaction Type', 
     DATE_FORMAT(CHANGE_EFFECTIVE_DATE,'%m/%d/%Y') AS 'Effective Date', 
     OWNER_COMMISSION_RATE AS 'Rate', 
     GROSS_PREMIUM AS 'Gross Premium', 
     OWNER_COMMISSION_AMOUNT AS 'Commission Amount', 
     EXPENSE_CONSTANT AS 'Expense Constant', 
     NET_AMOUNT AS 'Net Amount', 
     NET_AMOUNT AS 'Payment Amount' , 
     4 ORDERS 
     FROM TABLE1 
     WHERE   
     DATE(TRANSACTION_ENTRY_DATE) >=? 
     AND 
     DATE(TRANSACTION_ENTRY_DATE) <=? 
     ORDER BY TABLE1.POLICY_NUMBER,TABLE1.FLAG,TABLE1.ENDORSEMENT_NUMBER 
)T 
ORDER BY ORDERS; 

回答

0

我看見2個選項:

  1. 使用選擇值步驟正確地從字符串更改列整數或什麼的。
  2. 使用Cast('as as Integer)或類似的方法來確保SQL查詢返回列作爲正確的數據類型。

如果你在工會的不同部分有不同的數據類型,我會認爲你的聯合查詢會產生一個錯誤!那麼可能還有其他事情在這裏發生?

+0

嗨Codek,謝謝你的信息 1。 – lourdh

0

也可以使用MS Excel Writer步驟,並在內容選項卡上的「開始寫入...空行」框中輸入3。