Oracle SQL实现重复订单ID对应唯一编号的方法咨询
为唯一订单ID分配编号并生成简洁视图的实现方法
一、给order_id分配唯一id_number的具体实现
1. 数据库(SQL)场景
用窗口函数就能快速实现,两种写法满足不同需求:
- 生成带编号的完整订单列表:
SELECT order_id, DENSE_RANK() OVER (ORDER BY order_id) AS id_number FROM your_order_table;
- 直接生成简洁视图(每个order_id只显示一行对应编号):
SELECT DISTINCT order_id, DENSE_RANK() OVER (ORDER BY order_id) AS id_number FROM your_order_table ORDER BY id_number;
DENSE_RANK()会按order_id的顺序,给每个唯一值分配连续的编号,完全匹配你要的效果。
2. Excel场景
假设order_id在A列(从A2开始):
- 分配编号:在B2输入公式
=SUMPRODUCT(1/COUNTIF($A$2:A2,$A$2:A2)),下拉填充,就能得到从1开始的连续唯一编号; - 生成简洁视图:选中A列数据,点击「数据」→「删除重复值」,保留唯一的order_id后,再用上面的公式生成对应编号即可。
3. Python(Pandas)场景
用Pandas处理批量数据效率很高:
import pandas as pd # 读取订单数据(替换成你的文件路径) df = pd.read_csv("order_list.csv") # 给每个唯一order_id分配从1开始的编号 df['id_number'] = df['order_id'].astype('category').cat.codes + 1 # 生成简洁视图:去重并按编号排序 simple_order_view = df[['order_id', 'id_number']].drop_duplicates().sort_values('id_number') # 保存简洁视图到文件 simple_order_view.to_csv("simple_order_list.csv", index=False)
二、简洁视图的优化技巧
- 直接给客户提供去重后的order_id与id_number对应表,完全避免重复行的干扰;
- 如果需要保留原订单数据但要方便查看,可使用分组折叠功能:比如Excel的「数据分组」、SQL的
GROUP BY聚合显示订单数量,或者Pandas的分组汇总,按需展开订单细节。
内容的提问来源于stack exchange,提问作者JB999
相关产品推荐
相关产品推荐

