MS SQL服务器 - 添加带有子查询计算列

问题描述 投票:2回答:2

我试图用子查询,这将转化Unix时间戳到正规DateTime格式,使用这种查询添加计算列,但有错误。使用SQL Azure的服务器。

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
2个回答
3
投票

您不能使用子查询的计算列。相反,只是给公式只。

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')
© www.soinside.com 2019 - 2024. All rights reserved.