【问题标题】:MS SQL Server - Adding computed column with subqueryMS SQL Server - 使用子查询添加计算列
【发布时间】:2019-06-28 00:55:04
【问题描述】:

我正在尝试使用此查询添加带有子查询的计算列,这会将 Unix 时间戳转换为常规 DateTime 格式,但出现错误。 使用 Azure SQL Server。

ALTER TABLE dbo.FP_Contacts_CRM 
    ADD DWH_propertieslastmodifieddatevalue 
        AS (SELECT DATEADD(S, CONVERT(INT, LEFT(propertieslastmodifieddatevalue, 10)), '1970-01-01')
            FROM dbo.FP_Contacts_CRM)

我收到此错误:

消息 1046,第 15 级,状态 1,第 12 行
在这种情况下不允许子查询。只允许标量表达式

【问题讨论】:

  • 你的错误已经说不允许子查询
  • 此子查询可能返回不止一行。

标签: sql sql-server azure calculated-columns


【解决方案1】:

您不能对计算列使用子查询。相反,只需给出公式即可。

alter table dbo.FP_Contacts_CRM 
add DWH_propertieslastmodifieddatevalue as 
    (
        DATEADD(S, 
                    CONVERT(int,LEFT(propertieslastmodifieddatevalue, 10))
                    , '1970-01-01')
    )

【讨论】:

    【解决方案2】:

    正如错误所说,计算列声明不允许使用子查询。

    但对于原始问题,您可以使用如下所示的标量函数。

    DATEADD(S, CONVERT(int,LEFT(<yourdtcolumn>, 10)), '1970-01-01')
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-01-02
      • 1970-01-01
      • 2020-12-28
      • 2023-02-26
      • 1970-01-01
      • 2016-05-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多