SQL Server:创建条件表

时间:2019-02-20 11:53:07

标签: sql sql-server

我正在创建一个表,该表的日期将出现在两列之一中,或者都不显示。

我希望第三个使用这些值之一自动填充,而无需使用更新。

CREATE TABLE [table1] 
(
    id [BIGINT] NOT NULL,
    [date1] [DATETIME] NULL,
    [date2] [DATETIME] NULL,
    [date] AS (CASE 
                  WHEN [date1] IS NOT NULL THEN [date1]
                  WHEN [date2] IS NOT NULL THEN [date2]
                  ELSE NULL 
               END)
)

当我使用以下命令进行测试时,这似乎不起作用

INSERT INTO [table1] (id, date1) 
VALUES (1, GETDATE())

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:3)

您的代码似乎很好,如this db <> fiddle所示。但是,我建议使用COALESCE()而不是CASE

CREATE TABLE [table1] (
    id [bigint] NOT NULL,
    [date1] [datetime] NULL,
    [date2] [datetime] NULL,
    [date] AS ( COALESCE(date1, date2) )
);

更简洁