mssql 追加行号 row_number()的用法

本文介绍了一种在MSSQL中为查询结果生成行号的方法,类似于Oracle中的功能。通过使用row_number()函数,可以轻松地为查询结果集中的每一行添加一个唯一的行号,便于进一步的数据统计和处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

        在使用查询结果的时候需要生成一个新的行号用来做统计,oracle 中有这个功能,mssql 用得很少不清楚有没有这项功能,

搜索了一下,网上的解决方法乱七八糟,有限竟然需要一张临时表,我汗,最后发现了一个比较好的解决方法,row_number()

select row_number() over(order by tablename.id) as row_number,* from tablename
 

跟oracle的用法类似

1. 更新呼叫中心数据 取呼叫中心系统数据 ip:192.168.3.1 端口:3306 id=lpsoft password=@Aa.1234 database=OrderManage 表为 T_Customer 以T_Customer的phone字段为索引,匹配SAP数据,匹配的数据都是192.168.0.229这个ip的SINO_SAP这个库里的表 SQL账号:SAPReader 密码:Sino2025zyq 匹配SAP数据为: SELECT CAST(111100000048210 + ROW_NUMBER() OVER(ORDER BY (SELECT NULL)) AS bigint) AS Id, CAST(LOWER(NEWID()) AS varchar(50)) AS GUID , CAST('ipcc.org' AS varchar(50)) AS Domain, CAST( CASE WHEN ZY_TB_CustomerProfile.[客户类型] = 'VIP' THEN '703192237850693' ELSE '703192237846597' END AS varchar(20)) AS CustomerTypeCode, CAST('' AS text) AS Remark, CAST(ZY_TB_CustomerPhone.CardCode AS varchar(50)) AS S6, CAST(ZY_TB_CustomerPhone.Cardname AS varchar(100)) AS CompanyName, CAST(ZY_TB_CustomerPhone.Name AS varchar(50)) AS Name, CAST(LEFT(ZY_TB_CustomerPhone.Telephone, 15) AS varchar(15)) AS Phone, CAST(FORMAT(ZY_TB_CustomerProfile.近一年总毛利, '0.00') AS varchar(50)) AS S4, CAST(FORMAT(ZY_TB_CustomerProfile.预收款金额, '0.00') AS varchar(50)) AS S2, CAST(FORMAT(ZY_TB_CustomerProfile.应收款, '0.00') AS varchar(50)) AS S1, CAST(FORMAT(ZY_TB_CustomerProfile.全部库存金额, '0.00') AS varchar(50)) AS S3, CAST(ZY_TB_CustomerProfile.等级名称 AS varchar(50)) AS S5 FROM ZY_TB_CustomerPhone LEFT JOIN ZY_TB_CustomerProfile ON ZY_TB_CustomerPhone.CardCode = ZY_TB_CustomerProfile.[客户编号] WHERE ZY_TB_CustomerPhone.CardCode IS NOT NULL AND ZY_TB_CustomerPhone.Cardname IS NOT NULL and ZY_TB_CustomerPhone.Telephone not like '8441%'; 对T_Customer的字段更新: CompanyName、S6、CustomerTypeCode、S5、S1、S2、S3、S4 把SAP最新数据写入呼叫中心 2. 追加呼叫中心数据 对比T_Customer的phone和 SAP数据的phone, 将SAP有,T_Custome没有的数据整理出来,新增到T_Custome中,需要新增的字段就是: SELECT CAST(111100000048210 + ROW_NUMBER() OVER(ORDER BY (SELECT NULL)) AS bigint) AS Id, CAST(LOWER(NEWID()) AS varchar(50)) AS GUID , CAST('ipcc.org' AS varchar(50)) AS Domain, CAST( CASE WHEN ZY_TB_CustomerProfile.[客户类型] = 'VIP' THEN '703192237850693' ELSE '703192237846597' END AS varchar(20)) AS CustomerTypeCode, CAST('' AS text) AS Remark, CAST(ZY_TB_CustomerPhone.CardCode AS varchar(50)) AS S6, CAST(ZY_TB_CustomerPhone.Cardname AS varchar(100)) AS CompanyName, CAST(ZY_TB_CustomerPhone.Name AS varchar(50)) AS Name, CAST(LEFT(ZY_TB_CustomerPhone.Telephone, 15) AS varchar(15)) AS Phone, CAST(FORMAT(ZY_TB_CustomerProfile.近一年总毛利, '0.00') AS varchar(50)) AS S4, CAST(FORMAT(ZY_TB_CustomerProfile.预收款金额, '0.00') AS varchar(50)) AS S2, CAST(FORMAT(ZY_TB_CustomerProfile.应收款, '0.00') AS varchar(50)) AS S1, CAST(FORMAT(ZY_TB_CustomerProfile.全部库存金额, '0.00') AS varchar(50)) AS S3, CAST(ZY_TB_CustomerProfile.等级名称 AS varchar(50)) AS S5 FROM ZY_TB_CustomerPhone LEFT JOIN ZY_TB_CustomerProfile ON ZY_TB_CustomerPhone.CardCode = ZY_TB_CustomerProfile.[客户编号] WHERE ZY_TB_CustomerPhone.CardCode IS NOT NULL AND ZY_TB_CustomerPhone.Cardname IS NOT NULL and ZY_TB_CustomerPhone.Telephone not like '8441%'; 这个的全部字段 但是要注意新增的id和GUID不能和T_Custome原先有的重复,如果重复了就换一个 可以用sqlserver代码实现么 要注意sap是sqlserver 呼叫中心的数据是mysql
最新发布
08-12
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值