选择第一个免费号码

时间:2014-12-18 09:42:27

标签: sql database postgresql select

你好,我有一张这样的桌子:

scheme.tabname
(
id integer not null default nextval('my_seq'::regclass),
lp integer not null
);

我希望lp成为从零开始的第一个免费号码。每个新的一年,它都从零开始。

我更喜欢它是SELECT,所以我可以将它直接放入我的代码中。
有谁知道怎么做?

2 个答案:

答案 0 :(得分:0)

SELECT MAX(lp) + 1 FROM shceme.tablename 

会给你下一个lp但是每年重新开始你需要一个包含年份的列。

答案 1 :(得分:0)

我找到了很容易找到每年第一个免费号码的方法。

select case count(filter.lp) when 0 then 1
else min(filter.lp) end as lp

from (SELECT  lp + 1 as lp
FROM    table mo
WHERE   NOT EXISTS
        (
        SELECT  NULL
        FROM    table mi 
        WHERE   mi.lp= mo.lp + 1 and Extract(year from  mi.data_rejestracji) = Extract(year from Now())
    )
ORDER BY
    lp
LIMIT 1) filter