2016-11-22 61 views
0

我在我的SQL Server 2008 R2数据库中有一个表,它有一个不同的行,并且在其他表中有多行。我正在寻找的是一个更新查询,它将成为存储过程的一部分。SQL Server表中值的计数器

我想,每行有10个计数器,这将重复(见下文的例子)

Load_Id Counter Description 
=========================== 
C60000220121102134421 1 Text for Counter 1 
C60000220121102134421 2 Text for Counter 2 
C60000220121102134421 3 Text for Counter 3 
C60000220121102134421 4 Text for Counter 4 
C60000220121102134421 5 Text for Counter 5 
C60000220121102134421 6 Text for Counter 6 
C60000220121102134421 7 Text for Counter 7 
C60000220121102134421 8 Text for Counter 8 
C60000220121102134421 9 Text for Counter 9 
C60000220121102134421 10 Text for Counter 10 

这是我到目前为止所。

我有一个使用计数器创建表的查询,但我似乎无法得到查看T_DB_CLIENT_INFO表上的每一行的查询,并添加了10个计数器为1-10的行,以便描述可以被绑定到每个值。

SELECT DISTINCT 
    c.LOAD_ID, 
    ROW_NUMBER() OVER (ORDER BY c.LOAD_ID) AS COUNTER, 
    b.STATUS_DESCRIPTION,           
    c.CLNT_NM, c.CLIENT_ID, c.DATABASE_NAME, c.FLAG_FILTERED, 
    s.[ROUND] 
INTO 
    dbo.[load_id_counts] 
FROM 
    T_DB_CLIENT_INFO c 
JOIN 
    T_ICR_STAGING s ON c.LOAD_ID = s.LOAD_ID 
JOIN 
    overall_status_description b ON COUNTER = b.COUNTER 
+0

您的示例SQL无效,但无论如何使用mod(%)运算符将您的row_number重置为10 –

回答

0

的%运算符的语法是这样的,你的情况:

SELECT DISTINCT 
    c.LOAD_ID, 
    ((ROW_NUMBER() OVER (ORDER BY c.LOAD_ID) -1) % 10) + 1 AS COUNTER, 
    ... 
    INTO dbo.[load_id_counts] 
    FROM T_DB_CLIENT_INFO c 
    ... 

只需使用%运算会给你从0号,但你要的编号从1开始,所以这就是为什么你添加了-1+1

+0

谢谢mendosi。这正是我所需要的 – ncwright