2013-07-23 67 views
0

我正在與我們的人力資源部門合作,計算在特定時間內僱用的臨時工數量。用空值代替壞日期

我正在從Excel電子表格導入數據,該數據來自我們的SAP系統在月度自動導出中提供的數據。 [TempHireDate]列的值爲00/00/0000,而不是單元格中的NULL,表示不需要日期。我想運行一個派生列,去掉00/00/0000,並用NULL值替換它,因爲我將它導入到表中。

我相信派生的列是答案,但我很難得到任何標準表達式的工作。我認爲REPLACE表達式可以工作,但我認爲我沒有做對。

REPLACE(00/00/0000,[TempHireDate],NULL)

我做了搜索,發現了一些其他的例子,但不能讓他們擦出火花。 (Date_To_Check ==「00/00/0000」||(DT_Date)Date_To_Check <(DT_DATE)「1753-1-1」)?(日期_檢查==「00/00/0000」||(DT_Date)Date_To_Check <(DT_DATE)「1753-1-1」)? NULL(DT_DATE):(DT_DATE)Date_To_Check

ISNULL([列0])|| LEN(TRIM((DT_WSTR,10)[Column 0]))== 0 || [0列] ==「00/00/0000」NULL(DT_DATE):(DT_DBDATE)((DT_WSTR,10)[Column 0])

既沒有工作,也沒有再次我認爲我做錯了什麼。

有沒有人有什麼建議我可以做什麼或如何讓這些表達式工作?

+1

你在Excel做這個或SQL代碼? CASE WHEN DT_DATE = '00/00/0000'THEN NULL ELSE DT_DATE END –

+0

我正在從Excel導入到SQL臨時表。我已經有一個包含幾個派生列的包進行轉換。我只需要添加這一個轉變,以便讓人力資源希望看到的新計數。我去了源代碼,但是這個日期列在主控(SAP)系統中是硬編碼的,不能被修改。因此,我唯一的解決方案是在將數據導入暫存表中時,去掉00/00/0000。 –

+1

您可以在導入數據後在表上運行更新:UPDATE staging_table SET TempHireDate = NULL其中TempHireDate = '00/00/0000' –

回答

1

添加爲新列

[TempHireDate] == "00/00/0000" ? NULL(DT_WSTR,10) : [TempHireDate] 
+0

這一個工作。感謝您的幫助。 –

1
SELECT NullIf(TempHireDate, '00/00/0000') 
FROM your_table 
+0

我需要這是派生列的表達式。 –

+1

您上面的評論表示您正在導入SQL登臺表。將計算列添加到該登臺表中,或者簡單地使用SQL語句作爲包含此計算列的變換的源。 – gvee