我有一个包含两个日期列的表,都允许空值.
如果FileDate不为null,则AsOfDate需要等于(FileDate - Offset),其中Offset是一个默认为零的整数列.
这是我的表格def:
CREATE TABLE [import].[CMAR_GLXXXX]( [FileDate] [date] NULL, [LoadDTM] [date] NULL, [AsOfDate] [date] NULL, [AccountNumber] [varchar](50) NOT NULL, [CostCenter] [varchar](50) NOT NULL, [OffSet] [int] default (0) NOT NULL, [Value] [decimal](10,2) NOT NULL ) ON [PRIMARY]
我尝试使用以下内容:
(case when [File] IS NULL then NULL else dateadd(day,(-1 * [Offset]),[FileDate]) end)
遗憾的是,计算出的列错误对话框在对表达式进
有任何想法吗?
案例表达式在这里完全有效,但不需要您想要的输出.让sql server自然处理NULLS.
dateadd(day,(-1 * x),[d1])
- 编辑 -
这里演示的是表定义.似乎这完全符合您的要求.
create table #Something ( x int , d1 datetime , compCol as dateadd(day, (-1 * x), [d1]) ) insert #Something select 3, null union all select 4, '2016-01-01' select * from #Something