CREATE SEQUENCE id AS INTEGER START WITH 1 INCREMENT BY 1;
WITH source (Id, SomeColumn) AS
(
SELECT NEXT VALUE FOR id, 'some value 1'
UNION
SELECT NEXT VALUE FOR id, 'some value 2'
)
SELECT * FROM source;
DROP SEQUENCE id;
它会抛出以下错误:
检查约束中不允许使用NEXT VALUE FOR函数,默认值 对象,计算列,视图,用户定义的函数,用户定义的 聚合,用户定义的表类型,子查询,公用表 表达式,派生表或返回语句。
为什么NEXT VALUE FOR
功能无法与unions
一起使用?
什么是好的选择?
我使用类似的CTE使用merge语句为默认值播种表。我试图避免手动输入一系列数字。
我需要像UNION SELECT id ++
这样的东西答案 0 :(得分:0)
根据Alex的评论和类似问题的链接,这里是解决方案:
WITH source (SomeColumn) AS
(
SELECT 'some value 1'
UNION SELECT 'some value 2'
)
SELECT ROW_NUMBER() OVER (ORDER BY (SELECT NULL)), SomeColumn FROM source;
供将来参考:ROW_NUMBER() OVER (ORDER BY (SELECT NULL))
是在不订购集合