SQLserver自定义序列号

这是原本的spl代码

 car_weight =  B1.query("
	SELECT
	DISTINCT
		LTD1.*,
		(
		SELECT TOP 1 tmi.mix_grade_str 
			AS material_type_in 
		FROM
			[RTPC].[dbo].tbl_material_info tmi 
		WHERE
			material_name = LTD51.MatCode COLLATE Chinese_PRC_90_CI_AI_WS 
			and company_code = ?
		ORDER BY create_time DESC	
		) AS material_type_in,
		( SELECT TOP 1 material_class_small FROM [RTPC].[dbo].tbl_material_info tmi WHERE material_name = LTD51.MatCode COLLATE Chinese_PRC_90_CI_AI_WS
		and  company_code = ?
		ORDER BY create_time DESC ) AS material_class_small_in,
		LTD51.MatCode AS material_code_in,
		LTD51.MatName AS material_name_in,
		LTD51.ReqWT,
		LTD51.ActWT,
		LTD51.ActWT AS weight_in
	FROM
		(
			SELECT
			    plan_id_out,
			    lot_id_out,
			    material_type_out,
			    pro_date_out,
			    shift_id_out,
			    equip_id_out,
			    material_code_out,
			    material_name_out,
			    unit_cost_out,
			    weight_out,
			    cost_out,
			    batchno_out as batchno_out_old,
			    ROW_NUMBER() OVER(PARTITION BY plan_id_out ORDER BY plan_id_out,batchno_out) AS batchno_out
			FROM
			    (
			        SELECT
			            ORDERNO AS plan_id_out,
			            LOTID AS lot_id_out,
			            (
			                SELECT TOP 1 tmi.mix_grade_str AS material_type 
			                FROM [RTPC].[dbo].tbl_material_info tmi 
			                WHERE material_name = ITNBR COLLATE Chinese_PRC_90_CI_AI_WS 
			                and company_code = ?
			                ORDER BY create_time DESC	
			            ) AS material_type_out,
			            JDAT AS pro_date_out,
			            CAST ( JSHT AS INT ) AS shift_id_out,
			            JMCH AS equip_id_out,
			            ITNBR AS material_code_out,
			            ITDSC AS material_name_out,
			            '' AS unit_cost_out,
			            jwt AS weight_out,
			            '' AS cost_out,
			            CAST ( VALUE AS INT ) AS batchno_out 
			        FROM
			            PLMES.dbo.LTD0001 CROSS APPLY STRING_SPLIT ( CNUM, ',' ) 
			        WHERE
			           JDAT = ?
			           AND JSHT = ?
			            and  DIV <> 'XL'
			    ) AS subquery
		) LTD1
		LEFT JOIN PLMES.dbo.LTD0051 LTD51 ON LTD1.plan_id_out = LTD51.PlanId 
		AND LTD1.batchno_out = LTD51.BatchNo
		INNER JOIN PLMES.dbo.PPB0103 ppb3 ON LTD1.plan_id_out = ppb3.ORDERNO 
		where ppb3.STATE <> '4' 
		AND ppb3.STATE <> '5' 

",COMPANY_CODE,COMPANY_CODE,COMPANY_CODE,PRO_DATE,PRO_SHIFT)
.sort(plan_id_out,batchno_out)

需求

车次号不正确,需要根据得到的计划号,重新排序一下
例如:车次显示的是4、5、6、7,需要重排成1、2、3、4

语法

  • ROW_NUMBER() OVER 重新编号
  • PARTITION BY 基于什么分组
  • ORDER BY 基于什么排序
ROW_NUMBER() OVER(
PARTITION BY plan_id_out ORDER BY plan_id_out,batchno_out
) AS batchno_out
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值