我在sql server上遇到了问题。
如何一次从外键中获取运行号码从表中选择数据?
示例: 我有一个表,如
-----------------
| id | pid | desc |
-----------------
| 1 | 1 | a |
| 2 | 1 | b |
| 3 | 1 | c |
| 4 | 2 | d |
| 5 | 2 | e |
| 6 | 2 | f |
| 7 | 2 | g |
| 8 | 3 | h |
| 9 | 3 | i |
| 10 | 1 | j |
| 11 | 1 | k |
-----------------
我想得到如下结果
------------------------
| id | pid | desc | rec |
------------------------
| 1 | 1 | a | 1 |
| 2 | 1 | b | 2 |
| 3 | 1 | c | 3 |
| 4 | 2 | d | 1 |
| 5 | 2 | e | 2 |
| 6 | 2 | f | 3 |
| 7 | 2 | g | 4 |
| 8 | 3 | h | 1 |
| 9 | 3 | i | 2 |
| 10 | 1 | j | 4 |
| 11 | 1 | K | 5 |
------------------------
在上表中,外键(' pid')列在不同的行号中具有值1到3。 我试图从每个'pid'中获取运行编号。字段名称。 我找不到任何办法,
我能这样做吗?有人能帮我吗?我仍是sql server的新手
答案 0 :(得分:0)
您可以在SQL Server 2005+中使用排名功能来实现这一目标,
所以这是你的查询
Select Row_Number() over (partition by pid order by id) as rec , * from Table
答案 1 :(得分:0)
试试这个
SELECT
id,
pid,
[desc],
Row_Number() OVER (PARTITION BY pid ORDER BY id) AS rec
FROM <yourtable>
ORDER BY id