我有一个表值函数qlikview_verlauf
。我想返回一张包含id
,Date
和Path
的表格。
Identity(seed, increment)
ID是自动增量值。我想从另一个名为max(id)+1
的表中的Testfortschritt
开始这个自动增量(种子)。
我尝试了以下方法,但它不起作用。错误消息不正确语法。
Create FUNCTION [dbo].[qlikview_verlauf](@param INT)
RETURNS @qlikview_verlauf table (
ID INT IDENTITY((Select max(id) from Testfortschritt),1)
,[Date] date NOT NULL
,[Path] varchar(600) NOT NULL
)
答案 0 :(得分:1)
我会将您的ID列的IDENTITY
放在一边,而是使用ROW_NUMBER
在SELECT
声明中生成ID。
例如:
SELECT
(SELECT MAX(id) FROM Testfortschritt) +
ROW_NUMBER OVER(ORDER BY (SELECT 1)) AS ID,
[Date],
[Path]
FROM <YourTable>
由于我不知道您的确切语句是什么样的,我使用了ORDER BY (SELECT 1)
,它允许SQL Server决定记录的编号顺序。如果您有特定订单,只需将(SELECT 1)
替换为您的订单列。
由于ID应该是唯一的,我也省略了你的场景中不需要的PARTITION BY
子句。
有关ROW_NUMBER
的更多信息,请here