2013-07-23 29 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