我有一个公式,我需要能够放入我的SSIS派生列......下面是..
if MONTH(Sls.SlsDt) + DAY(Sls.SlsDt) > MONTH(TODAY) + DAY(TODAY) then
dYdtYr = 0.
else
dYdtYr = YEAR(Sls.SlsDt).
如何将上述业务逻辑放入SQL SSIS ETL派生列转换?
派生列是否是完成此任务的正确选项?
ETL包是从CSV到SQL登台表的导入,在此导入期间,我需要输出具有上述逻辑的新列(或替换现有的)。
输入行包含MONTH和DAY以及dYdtYr列。从某种意义上说,我需要根据上述逻辑用新值覆盖dYdtYr值。
答案 0 :(得分:2)
派生列设置为替换列使其替换为dYtdYr。将以下内容放入表达式中:
(MONTH(Sls.SlsDt) * 100 + DAY(Sls.SlsDT) > MONTH(getdate())*100 + DAY(getdate())) ? 0 : YEAR(Sls.SlsDt)
这需要月份值(3月3日)乘以100得到300并将其添加到日期值(今天为04)并且显示类似0304的值。这将有效,以便一年中的任何一天或等于此值将小于该数字,并且今天之后的任何一天将更大。请注意,这不考虑年份。这意味着从3年前的12月31日将在dYtdYr获得0,但从3年前的3月3日将(今天)获得SlsDt的年份。我猜想如果这是你想要的结果,那你就是在努力建立年度YTD比较。
答案 1 :(得分:0)
如果您可以使用TSQL
,则可以使用CASE
声明
CASE
WHEN MONTH(Sls.SlsDt) + DAY(Sls.SlsDt) > MONTH(getDate()) + DAY(getDate())
THEN dYdtYr = 0
ELSE
dYdtYr = YEAR(Sls.SlsDt)
END AS ColumnName