是否可以根据另一列运行不同的自动增量序列?就像左边的桌子而不是右边......
item_id | group_id item_id | group_id
____________________ ____________________
1 | 1 1 | 1
2 | 1 2 | 1
1 | 2 3 | 2
1 | 3 4 | 3
3 | 1 5 | 1
2 | 3 6 | 3
我怀疑这是不可能的,但也许有办法做到这一点?
感谢您的关注。
编辑:对于2012 SQL Server
答案 0 :(得分:2)
Row_Number
partition by
看起来应该有效
select Row_number() over(partition by group_id order by (select null)) item_id,
Group_id
From Yourtable
答案 1 :(得分:0)
不需要。
只需使用以下查询。
SELECT item_id, ROW_NUMBER() OVER(ORDER BY group_id)
FROM table_name
答案 2 :(得分:0)
根据M.Ali提出的方向,我开始查看计算列,这些列也没有成功,但确实让我想到了另一种方法。我最终得到了以下解决方案:远非优雅,但它有效...
INSERT INTO tst (group_id, item_id) VALUES (8,
CASE WHEN NOT EXISTS
(SELECT TOP(1) item_id FROM tst WHERE group_id=8 ORDER BY item_id DESC)
THEN 100
ELSE
(SELECT TOP(1) item_id+1 FROM tst WHERE group_id=8 ORDER BY item_id DESC) END)
如果这让您考虑更好的解决方案,请分享:)
感谢所有花时间回应的人。