如何使用SQL Server函数从表中获取最大PK。如果表没有数据,则应返回1

时间:2017-11-09 04:37:54

标签: sql sql-server database sql-server-2008 tsql

我在SQL Server中编写了一个函数来获取id的最大值,以便我可以使用它进行排序

create function dbo.DQ_ACC_PROCESS_EXEC_MASTER_SK()
returns bigint 
as
begin
    declare @MAX_PK as BIGINT;

    select @MAX_PK = max(Process_ID) + 1 
    from dbo.DQ_ACC_PROCESS_EXEC_SUMMARY_LOG

    return @MAX_PK;
end;

对于第一次运行,该表将没有任何值,所以虽然我使用+1,但它不会给我1作为返回结果。

我也试过了ISNULL(PROCESS_ID, 1)CASE WHEN PROCESS_ID ISNULL THEN 0 ELSE PROCESS_ID END。我也试过COALESCE。因此,他们都没有返回1。

你能帮忙吗?我是SQL Server新手。

1 个答案:

答案 0 :(得分:1)

尝试以下查询

from operator import itemgetter
print(list(itemgetter(*b)(a)))

如果表格没有数据,它将返回[array([ 0.1, 0.1, 0.1]), array([ 0.1, 0.1, 0.1]), array([ 0.1, 0.1, 0.1]), array([ 0.2, 0.2, 0.2])] ,否则将返回下一个select @MAX_PK=ISNULL(max(Process_ID),0)+1 from dbo.DQ_ACC_PROCESS_EXEC_SUMMARY_LOG