-- 有一明细表A存储的数据如下
-- 编号 品名 数量
-- ---- ---------- -----------
-- A001 品名一 100
-- A001 品名二 110
-- B002 品名一 200
-- B002 品名二 220
-- B002 品名三 220
-- C003 品名一 300
-- C003 品名二 100
-- C003 品名三 300
-- C003 品名二 900
-- 欲通过SQL得到如下结果,在原基础上加一序号
-- 序号 编号 品名 数量
-- ----------- ---- ---------- -----------
-- 0 A001 品名一 100
-- 1 A001 品名二 110
-- 0 B002 品名一 200
-- 1 B002 品名二 220
-- 2 B002 品名三 220
-- 0 C003 品名一 300
-- 1 C003 品名二 100
-- 2 C003 品名三 300
-- 3 C003 品名二 900
按“编号”排序。同编号的序号从0开始递增,序号在上面的序号的基础上加1。与“品名”和“数量”无关。
方案:sql server
SELECT 序号=ROW_NUMBER() OVER (PARTITION BY 编号 ORDER BY 品名)-1,* FROM tb
oracle
SELECT ROW_NUMBER() OVER (PARTITION BY BH ORDER BY BH) - 1 XH,T.* FROM TEST1 T