添加包含行号的列

时间:2016-06-23 06:20:34

标签: sql rows

我想在我的选择中添加一列,显示一组数字,例如1到4。

实施例: 选择*给我

Id Transaction 
1  10
2  11
3  12
4  13
5  14
6  15

我想添加名为" Flow"的列。结果应该是这样的。

Id Transaction  Flow  
1   10             1 
2   11             2 
3   12             3 
4   13             4 
5   14             1 
6   15             2 

在此示例中,流量为1-4。可能是1-n。 Id和Flow之间不需要特别的关系。

2 个答案:

答案 0 :(得分:0)

如果您正在使用允许ROW_NUMBER的SQL Server或其他DBMS,则可以执行以下操作:

CREATE TABLE #Tbl(Id INT, [Transaction] INT);
INSERT INTO #Tbl VALUES
(1, 10), (2, 11), (3, 12), (4, 13), (5, 14), (6, 15);

DECLARE @N INT = 4;

SELECT *,
    Flow = 1 + ((ROW_NUMBER() OVER(ORDER BY Id) - 1) % @N)
FROM #Tbl

DROP TABLE #Tbl;

答案 1 :(得分:0)

如果您使用的是mySql

<强>查询

set @r := 0;
select Id, `Transaction`,
@r := (@r % 4) + 1 as Flow
from your_table_name
order by Id;

Demo

修改

无论rdbms如何,都可以使用以下sql查询。

<强>查询

select *, (
    select ((count(*) - 1) % 4) + 1 as Flow
    from your_table_name t2
    where t1.Id >= t2.Id
) as Flow
from your_table_name t1;