bsi*_*vel 0 t-sql sql-server sql-server-2012
我有一个包含两个日期列的表,都允许空值.
如果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]
Run Code Online (Sandbox Code Playgroud)
我尝试使用以下内容:
(case when [File] IS NULL then NULL else dateadd(day,(-1 * [Offset]),[FileDate]) end)
Run Code Online (Sandbox Code Playgroud)
遗憾的是,计算出的列错误对话框在对表达式进
有任何想法吗?
案例表达式在这里完全有效,但不需要您想要的输出.让sql server自然处理NULLS.
dateadd(day,(-1 * x),[d1])
Run Code Online (Sandbox Code Playgroud)
- 编辑 -
这里演示的是表定义.似乎这完全符合您的要求.
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
Run Code Online (Sandbox Code Playgroud)