SQL SSIS派生列公式/语法问题(SQL SSIS Derived Column formula

2019-10-17 18:42发布

我有一个公式,我需要能够把我的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临时表,这个进口我需要输出一个新的列中(或替换现有的),其具有上述逻辑实现。

输入行包含的月份和日期和dYdtYr列。在某种意义上,我会需要重写基于上述逻辑与新价值的dYdtYr值。

Answer 1:

派生列设置为更换色谱柱有它取代dYtdYr。 把下列表达式:

(MONTH(Sls.SlsDt) * 100 + DAY(Sls.SlsDT) > MONTH(getdate())*100 + DAY(getdate())) ? 0 : YEAR(Sls.SlsDt)

这需要一个月值(03月)乘以100就得到300,并将其添加到天值(04今天)和yeilds像0304的值,这样会起作用,从而使一年中的任何一天前或等于该值将低于这个数字与去年的任何一天后,今天将更大。 请注意,这并不考虑年。 这意味着,12月31日从3年前就从3年前获得dYtdYr但3月3日0会(今天)得到SlsDt年吧。 我猜想,如果这是你想要的结果,你想在新年比较构建YTD年。



Answer 2:

如果你可以使用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


文章来源: SQL SSIS Derived Column formula/syntax issues