在sql查询中使用rollno交换序列号 [英] swaping serial no with rollno in sql query

查看:165
本文介绍了在sql查询中使用rollno交换序列号的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

你好,早上好了





我有一个问题,就是把卷号换成序号。

我有一张桌子像





id roll_No name

--------- -------------------------

1 1 raj

2 3 jogindar
3 6 yograj

4 7 amit

5 8 Upkar

6 10 hemraj

8 21 khemraj





我希望得到这样的结果

======== ===============================================



id roll_No aname

-------------------------- ---------

1 amit

4 2 amit

6 3 hemraj

2 4 jogindar

8 5 khemraj

5 6 Upkar

3 7 yograj



= - ==================== =========

UPDATE客户SET名称=地址,地址=姓名

^

此查询工作正常但是



更新tbl_testing set roll =(选择row_number()结束(按照aname命令))



this查询不可用













请帮助我紧急



提前感谢

hello all good moring


I have a problem to swaping roll no with serial No.
I have a Table like


id roll_No name
----------------------------------
1 1 raj
2 3 jogindar
3 6 yograj
4 7 amit
5 8 Upkar
6 10 hemraj
8 21 khemraj


and I want the result of like this
=======================================================

id roll_No aname
-----------------------------------
1 1 amit
4 2 amit
6 3 hemraj
2 4 jogindar
8 5 khemraj
5 6 Upkar
3 7 yograj

=-=============================
UPDATE Customer SET Name=Address , Address=Name
^
this query is working properly but

update tbl_testing set roll=(select row_number() over (order by aname))

this query is not usable






please help me its urgent

thanks in advance

推荐答案

尝试这个....

- 与OriginalGriff解决方案相同但你必须添加PARTITION BY

Try this....
-- Same as OriginalGriff Solution but u have to add "PARTITION BY"
UPDATE MyTable SET RollNo=j.RowNo
FROM MyTable INNER JOIN
   (SELECT Id, ROW_NUMBER() OVER (PARTITION BY [Name] ORDER BY [Name]) AS RowNo FROM MyTable) as j
   ON MyTable.Id = j.Id





ROW_NUMBER(Transact-SQL) [ ^ ]

如何使用ROW_NUMBER()枚举和分区SQL Server中的记录 [ ^ ]



Rega rds,

GVPrabu



ROW_NUMBER (Transact-SQL)[^]
How to use ROW_NUMBER() to enumerate and partition records in SQL Server[^]

Regards,
GVPrabu


这有点复杂,但它是可行的:

This is a little complicated, but it's doable:
UPDATE MyTable SET RollNo=j.RowNo
FROM MyTable INNER JOIN
   (SELECT Id, ROW_NUMBER() OVER (ORDER BY [Name]) AS RowNo FROM MyTable) as j
   ON MyTable.Id = j.Id






When you

SELECT * FROM MyTable

之后,你将部分得到你想要的东西:行不会被订购,但Roll_no将是一个你需要的。

要按照你想要的确切顺序返回它们,你需要指定一个排序顺序 - 因为如果不这样做,SQL可以按任何顺序返回行:

after that, you will partly get what you want: The rows will not be ordered, but the Roll_no will be as you wanted.
To return them in the exact order you want, you need to specify a sort order - because SQL can return rows in any order convenient to it if you don't:

SELECT * FROM MyTable ORDER BY RollNo


这篇关于在sql查询中使用rollno交换序列号的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆