当前位置:  开发笔记 > 数据库 > 正文

是否可以在SQL Server计算列中使用Case语句

如何解决《是否可以在SQLServer计算列中使用Case语句》经验,为你挑选了1个好方法。

我有一个包含两个日期列的表,都允许空值.

如果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)

遗憾的是,计算出的列错误对话框在对表达式进

有任何想法吗?



1> Sean Lange..:

案例表达式在这里完全有效,但不需要您想要的输出.让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

推荐阅读
牛尾巴2010
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有