
例如,如果要根据列1填充列2,可以使用如下 SQL 语句:
SELECT
列1,ROW_NUMBER() OVER (PARTITION BY 列1 ORDER BY 列1) 列2FROM 表A
其中,ROW_NUMBER()是一个窗口函数,它根据给定的分组条件(在本例中为列1),为每一行生成一个唯一的行号。
结果应该类似于下面这样:
列1 列2
aa1
aa1
bb1
cc1
注意,由于没有给定排序条件,因此行号的生成顺序是不确定的。如果要按照列1的值的字母顺序为每一行生成行号,可以将上面的语句更改为:
SELECT
列1,ROW_NUMBER() OVER (PARTITION BY 列1 ORDER BY 列1) 列2FROM 表AORDER BY 列1
结果应该类似于下面这样:
列1 列2
aa1
aa1
bb2
cc3
希望这些信息能对你有所帮助。
现有两种方法解决,供参考:
1、SELECT IDENTITY(INT,1,1) AS 序号, avge FROM Table1
2、SELECT IDENTITY(INT,1,1) AS 序号, avge INTO #temp1 FROM Table1
SELECT * FROM #temp1
DROP TABLE #temp1
给查询出的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 为表名,字段为表a中的字段名)
selectconcat(concat(t2.nm,'.'),t1.mn)序号,t1.公司ID,
from
(select
row_number()
over(partition
by
公司ID
order
by
员工名)
mn,
公司ID
from
table)
t1
,
(select
nn+nn/10
nm,公司ID
from(
select
公司ID,rownum
nn
from
(select
公司ID
from
table
group
by
公司ID
order
by
公司ID)
))
t2
where
t1.公司ID=
t2.公司ID
-------------------------------------------------------------------------
Oracle下测试通过,如果你不是Oracle,请忽略
-------------------------------------------------------------------------
思想,t1表得到的是1
A
2
A
1
B
t2表得到的是1.1
A
2.2
B
把他们第一个字段拼起来。
ps:sql写的我自己都觉得烦。。。。。。。。。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)