序号从 1 开始

Posted

技术标签:

【中文标题】序号从 1 开始【英文标题】:Serial NO starting from 1 【发布时间】:2016-07-27 06:25:40 【问题描述】:

我有一个查询,我想要一列作为SR_No应该从 1 开始

以下是我的查询

SELECT         
top 2      
 userName,   
 Party_name, 
 Ref_No,
 Ref_date,   
 doc_date,
 Last_Action_date,
 RAName,          
 COUNT(Doc_No) AS CountofDocNo,                  
 Document_Type,           
 RA1_Email                  
FROM #MainTempTable         
 GROUP BY RAName,          
 userName,           
 Document_Type,          
 RA1_Email ,Party_name,Ref_No,
 Ref_date, doc_date,Last_Action_date
 order by RAName

如何从 1 开始它的序列号。

我尝试使用 Row_NUM(),但它不是从 1 开始的。

更新

我尝试了 Madhivnan 的解决方案,但它不适用于我的第二个查询

SELECT         
top 2  
 row_number() over (order by (select 0)) as SR_No,      
 UserName,
 RAName,
 Party_Name,     
 Ref_No,
 Ref_date, 
 doc_date,   
 Last_Action_date,
 Document_Type,           
 Doc_No,           
 No_Of_Days_Doc_Pending,           
 UserEmail,RA1_Email                  
 FROM #MainTempTable    order by UserName   

【问题讨论】:

您尝试使用 ROW_NUM() 的代码是什么? @Edward:我尝试过类似1 + ROW_NUMBER() OVER (ORDER BY userName) AS [SR_No]order by 中的SR_NO 你为什么要加1呢?由于 ROW_NUMBER() 被定义为从 1 开始对行进行编号,如果您首先尝试将其设置为 1+ROW_NUMBER() 并且您得到从 2 开始的数字,您认为这里没有明显的解决方法吗? @Damien_The_Unbeliever:是的,我错过了。谢谢提醒 更改(select 0) 以匹配数据的实际顺序。即根据@Edward 的回答将(select 0) 更改为UserName。然后阅读并了解ROW_NUMBER() 的工作原理 【参考方案1】:

试试这个

SELECT         
top 2 row_number() over (order by (select 0)) as SR_No,     
 userName,   
 Party_name, 
 Ref_No,
 Ref_date,   
 doc_date,
 Last_Action_date,
 RAName,          
 COUNT(Doc_No) AS CountofDocNo,                  
 Document_Type,           
 RA1_Email                  
FROM #MainTempTable         
 GROUP BY RAName,          
 userName,           
 Document_Type,          
 RA1_Email ,Party_name,Ref_No,
 Ref_date, doc_date,Last_Action_date    
order by RAName

【讨论】:

这是“请为我的行分配随机数” - 如果您想在这里获得一些确定性,您可以使用基于您的数据和您的要求的表达式,而不是 (select 0)【参考方案2】:

它应该适用于您的情况:

SELECT         
top 2      
 userName,   
 Party_name, 
 Ref_No,
 Ref_date,   
 doc_date,
 Last_Action_date,
 RAName,          
 COUNT(Doc_No) AS CountofDocNo,                  
 Document_Type,           
 RA1_Email,
 ROW_NUMBER() OVER(ORDER BY RAName) AS SR_No                 
FROM #MainTempTable         
 GROUP BY RAName,          
 userName,           
 Document_Type,          
 RA1_Email ,Party_name,Ref_No,
 Ref_date, doc_date,Last_Action_date

【讨论】:

【参考方案3】:

这个可以帮到你

select  ROW_NUMBER() OVER ( order by field1) as rownumber,field2,field3 from dbo.yourtable 

【讨论】:

以上是关于序号从 1 开始的主要内容,如果未能解决你的问题,请参考以下文章

RDLC分组后序号,从1开始

thinkphp里volist输出序号,从2开始该怎么操作。

前端页面for循环添加序号

jQuery实现表格行的动态增加与删除 序号 从 1开始排列

ORACLE 如何生成序号

分页显示中关于"序号"的问题