我有一个包含两个日期列的表,它们都允许空值。是否有可能在SQL Server计算的列中有一个Case语句
如果FileDate不为空,则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)
不幸的是,计算列错误对话框不排除故障的表达显示太大的帮助。
任何想法?
你可以分享你的完整'create table'语句吗? – Mureinik
会做但col的名字是不同的。我会清理问题,让它们匹配。 – bsivel
'CASE'不是一个语句 - 它是一个**表达式**(比如'a + b'),它可以返回一个原子值(来自一组可能的选择)。是的 - 一个CASE表达式可用于任何可以使用任何其他表达式的地方 - 包括在计算列定义中 –