函数编写 SQL 如何给记录加序号

如题所述

有五种方法:
一、需要用临时表来实现
select IDENTITY(int, 1,1) AS ID_Num,* into #temp from 表
select * from #temp
Drop Table #temp
二、不用临时表,就必须有排序列,值唯一,做参考:
select (select count(*) from yourtable where col <= A.col) row, * from yourtable A order by col
三、在原表中增加一列来实现
alter table yourtable add ID int identity
select * from yourtable
alter table yourtable drop column ID
四、 使用SQL Server 2005 独有的RANK() OVER () 语法(测试 客户编号 也应该值唯一才对)
SELECT RANK() OVER (ORDER BY 客户编号 DESC) AS 序号, 客户编号,公司名称 FROM 客户
五、
SELECT 序号= COUNT(*), a.客户编号, b.公司名称
FROM 客户 AS a, 客户AS b WHERE a.客户编号>= b.客户编号
GROUP BY a.客户编号, a.公司名称
ORDER BY 序号
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-03-29
记录是查询出来的还是原始的数据记录呢?
如果是查询出来的或者增加记录:
IDENTITY(函数)
只用在带有 INTO table 子句的 SELECT 语句中,以将标识列插入到新表中。

尽管类似,但是 IDENTITY 函数不是与 CREATE TABLE 和 ALTER TABLE 一起使用的 IDENTITY 属性。

语法
IDENTITY ( data_type [ , seed , increment ] ) AS column_name

参数
data_type

标识列的数据类型。标识列的有效数据类型可以是任何整数数据类型分类的数据类型(bit 数据类型除外),也可以是 decimal 数据类型。

seed

要指派给表中第一行的值。给每一个后续行指派下一个标识值,该值等于上一个 IDENTITY 值加上 increment 值。如果既没有指定 seed,也没有指定 increment,那么它们都默认为 1。

increment

用来添加到 seed 值以获得表中连续行的增量。

column_name

将插入到新表中的列的名称。

返回类型
返回与 data_type 相同的类型。
第2个回答  推荐于2017-09-29
给查询出的SQL记录添加序号列,解决方法有以下两种
第一:
select ROW_NUMBER() OVER (ORDER BY a.字段 ASC) AS XUHAO,a.* from table a
(table 为表名,字段为表a中的字段名)
第二:
select RANK() OVER (ORDER BY a.字段 ASC) AS XUHAO,a.* from table a
(table 为表名,字段为表a中的字段名)
第3个回答  2011-04-01
lect里面的列的个数只能是固定的,所以我觉得,如果zm里的数据是动态的话,你必须动态生成这个语句。
select fjname, name, hm,
max(decode(zm, 'aaa', zm, null )) zm1, max(decode(zm, 'aaa', charge, null )) zm1charge,
max(decode(zm, 'bbb', zm, null )) zm2, max(decode(zm, 'bbb', charge, null )) zm2charge,
max(decode(zm, 'ccc', zm, null )) zm3, max(decode(zm, 'ccc', charge, null )) zm3charge,
max(decode(zm, 'ddd', zm, null )) zm4, max(decode(zm, 'ddd', charge, null )) zm4charge
from owe
group by fjname, name, hm;
另外,团IDC网上有许多产品团购,便宜有口碑
第4个回答  2011-03-29
新建一个属性,在是否自动添加还是什么来着,点击“是”,增值为1

函数编写 SQL 如何给记录加序号
一、需要用临时表来实现 select IDENTITY(int, 1,1) AS ID_Num,* into #temp from 表 select * from #temp Drop Table #temp 二、不用临时表,就必须有排序列,值唯一,做参考:select (select count(*) from yourtable where col <...

sql 查询语句自动增加序号
给查询出的SQL记录添加序号列,解决方法有以下两种 第一:select ROW_NUMBER() OVER (ORDER BY a.字段 ASC) AS XUHAO,a.* from table a1 (table 为表名,字段为表a中的字段名) 第二:select RANK() OVER (ORDER BY a.字段 ASC) AS XUHAO,a.* from table a1 (table 为表名,字段为...

问一个sql查询,如何给查询结果加上序号
SELECT ROW_NUMBER() OVER(ORDER BY ID) ROWNU,A1 FROM TA1解说:在这里,TA1是一个表,A1是表中的一个字段,表的另一个字段为ID本用于自增这儿用来排序。SQL Server 中的 ROW_NUMBER() 得到一个查询出的顺序,但这个函数要求给出一个查的排序方案,因为SQL Server的存储是无关顺序的。在O...

如何用SQL语句实现子分类中的不同项目自动添加数字编号?
1、你另外建一张表,比如叫SUB_ID_NAME_COMP,然后一个字段是SUB_ID,另一个是SUB_NAME,然后你在这张表里面把对应关系整理好;2、写下面这个脚本搞起:select 'update A set a.sub1_id=' || (select x.sub_id from SUB_ID_NAME_COMP x where x.sub_name = a.sub1_name) ...

sql server 如何给相同的记录编上一定格式的编号呢
update abc set new=b.rn from abc a inner join (select name,id,name+'_'+right('00'+cast(row_number() over (partition by name order by id) as varchar),3) rn from abc) bon a.name=b.name and a.id=b.id 结果 说明:由于sqlserver中这个row_number函数只能用在select或order...

编写查询SQL语句
使用分析函数row_number() over (partition by ... order by ...)来给记录编号, 然后只取编号值小于3的记录即可. SQL Server 2005, Oracle 8i开始都有支持.查询SQL类似:select s.id, s.main_id, s.name from ( select d.*, row_number() over (partition by d.main_id order by ...

sql如何给查询出来的数据重新编号
Row_Number是2005的函数2000你可以用identity加临时表的方法 select Identity(int,0,1) as RowId,* into #temp from Table_1select * from #temp

sql中如何实现以日期为条件,使每个月会自动的从1开始重新累加排序。如下...
SELECT to_number(to_char(SYSDATE,'yyyymm')) FROM dual;--201212 SELECT lpad(1,4,0) FROM dual;--SELECT lpad(1,4,0) FROM dual;第一句是获取系统年月 第二句就是实现你要的四位数lpad(1 ,4,0) 的意思就是给数字将1处理成0001。第一数字就是你要累加的值 ...

Mysql实现SQL Row_Number函数,对数据进行分组排序
测试数据如下:需要返回每个人最近购买的一笔产品信息,包括人员详细信息。实现代码如下:原理:使用变量@name1(初始值为null),如果下一条记录的name1与当前记录相同,则rownum加1;如果不同,则相当于重新开窗口计算,rownum为1。需要注意的是:使用sql实现这一功能非常简单,只需一个函数即可完成。

oracle 怎样给表中某个记录重复数据增加序号
代码如下:SELECT ROW_NUMBER () OVER (ORDER BY english DESC) seq,name,sex,englishFROM '英语成绩表'

相似回答