【问题标题】:Why does the FOR Clause not work with an alias in SQL Server 2016 with temporal tables?为什么 FOR 子句不适用于 SQL Server 2016 中带有临时表的别名?
【发布时间】:2017-06-02 20:34:44
【问题描述】:

我有一个带有时态表的 SQL Server 2016 数据库。一张临时表称为公司。我正在尝试查询它以获取当前记录和所有历史记录。我首先尝试了以下查询:

select *
from Company c
FOR SYSTEM_TIME all

并得到以下错误: “FOR”附近的语法不正确。

但是,如果我在没有别名的情况下尝试它,它可以正常工作:

select *
from Company
FOR SYSTEM_TIME all

我找不到任何关于此的文档 - 这是一个合法的限制、已知问题还是其他什么?

【问题讨论】:

  • 你用 AS 试过了吗?通常 SQL Server 暗示了这一点,它是可选的,但我想知道它是否必须在这里明确。
  • 用AS试过了,结果一样。
  • 似乎是一个限制 - 但你可以使用 CTE:..... WITH _data AS { SELECT * FROM Company FOR SYSTEM_TIME all } SELECT * FROM _data AS d 。 - 见这里stackoverflow.com/a/45144816/495157

标签: sql-server sql-server-2016 temporal-database


【解决方案1】:

这对我有用

select *
from Company FOR SYSTEM_TIME all c

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-05-26
    • 1970-01-01
    • 2021-03-29
    • 2010-09-06
    • 2023-03-16
    • 2018-03-30
    • 1970-01-01
    • 2010-12-25
    相关资源
    最近更新 更多