Sql 添加一个序列列,如果达到最大值,该列将递增
我想添加一列,它将根据系列的最大数量进行计数 我已使用以下方法生成了序列号列:Sql 添加一个序列列,如果达到最大值,该列将递增,sql,oracle,Sql,Oracle,我想添加一列,它将根据系列的最大数量进行计数 我已使用以下方法生成了序列号列: MOD(ROW_NUMBER() OVER (ORDER BY item_code, loc_code, cargo_sts) - 1, 3) + 1 在这种情况下,最大序列号为3。下面是示例结果集。现在,我想生成SHEET\u NO列。有什么建议吗?谢谢 CARGO_STS LOC_CODE ITEM_CODE AVAIL_QTY SERIES_NO SHEET_NO NORMAL
MOD(ROW_NUMBER() OVER (ORDER BY item_code, loc_code, cargo_sts) - 1, 3) + 1
在这种情况下,最大序列号为3
。下面是示例结果集。现在,我想生成SHEET\u NO
列。有什么建议吗?谢谢
CARGO_STS LOC_CODE ITEM_CODE AVAIL_QTY SERIES_NO SHEET_NO
NORMAL D1867BD1 0000044500 6 1 1
NORMAL D1947GD1 0000055401 2 2 1
NORMAL D3351AA1 0000058000 2 3 1
NORMAL D1945DC2 0000058201 1 1 2
STO-DAMAGE 205-12BB 0000058300 1 2 2
NORMAL D3446FB1 0000058300 1 3 2
NORMAL Q00-37CA 0000060401 128 1 3
NORMAL D1158FA1 0000079901 36 2 3
下面这样做可以:
ceil (ROW_NUMBER() OVER (ORDER BY item_code, loc_code, cargo_sts) /3 )
下面这样做可以:
ceil (ROW_NUMBER() OVER (ORDER BY item_code, loc_code, cargo_sts) /3 )
谢谢你的主意,巴维斯。我找到了正确的方法。@BhaveshGhodasara最好使用
CEIL
而不是FLOOR
,因为FLOOR(1/3)=0,但看起来Jeff希望它是1,这意味着之后必须向它添加1。CEIL(1/3)将是1,这就不需要在之后添加一个。感谢Bhavesh的想法。我找到了正确的方法。@BhaveshGhodasara最好使用CEIL
而不是FLOOR
,因为FLOOR(1/3)=0,但看起来Jeff希望它是1,这意味着之后必须向它添加1。CEIL(1/3)将是1,这否定了之后添加一个的必要性。