你好,我有一张这样的桌子:
scheme.tabname
(
id integer not null default nextval('my_seq'::regclass),
lp integer not null
);
我希望lp
成为从零开始的第一个免费号码。每个新的一年,它都从零开始。
我更喜欢它是SELECT
,所以我可以将它直接放入我的代码中。
有谁知道怎么做?
答案 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