在4个标志之间拆分SQL行

在4个标志之间拆分SQL行,sql,sql-server,tsql,Sql,Sql Server,Tsql,如何在不同用户之间划分每4行数据 i、 e 然后运行查询,以获得以下格式: Number | User 1 | joe 2 | jim 3 | gill 4 | jack 5 | joe 6 | jim 7 | gill 8 | jack 等等 更新 我的代码最终是T-SQL/SQL 2008 SELECT CASE WHEN ROW_NUMBER() OVER(ORDER BY number) % 4

如何在不同用户之间划分每4行数据

i、 e

然后运行查询,以获得以下格式:

Number | User 
1      | joe
2      | jim
3      | gill
4      | jack
5      | joe
6      | jim
7      | gill
8      | jack
等等

更新

我的代码最终是T-SQL/SQL 2008

SELECT CASE 
    WHEN ROW_NUMBER() OVER(ORDER BY number) % 4 = 1 THEN 'joe'
    WHEN ROW_NUMBER() OVER(ORDER BY number) % 4 = 2 THEN 'jim'
    WHEN ROW_NUMBER() OVER(ORDER BY number) % 4 = 3 THEN 'gill'
    WHEN ROW_NUMBER() OVER(ORDER BY number) % 4 = 0 THEN 'jack'
END

只需在case语句中使用模运算符:

select number,
       (case when mod(number, 4) = 1 then 'joe'
             when mod(number, 4) = 2 then 'jim'
             when mod(number, 4) = 3 then 'gill'
             when mod(number, 4) = 0 then 'jack'
        end)
from t;

只需在case语句中使用模运算符:

select number,
       (case when mod(number, 4) = 1 then 'joe'
             when mod(number, 4) = 2 then 'jim'
             when mod(number, 4) = 3 then 'gill'
             when mod(number, 4) = 0 then 'jack'
        end)
from t;

当数字有一些间隙时:

SELECT CASE 
        WHEN MOD(ROW_NUMBER() OVER(ORDER BY number), 4) = 1 THEN 'joe'
        WHEN MOD(ROW_NUMBER() OVER(ORDER BY number), 4) = 2 THEN 'jim'
        WHEN MOD(ROW_NUMBER() OVER(ORDER BY number), 4) = 3 THEN 'gill'
        WHEN MOD(ROW_NUMBER() OVER(ORDER BY number), 4) = 0 THEN 'jack'
    END
FROM t

当数字有一些间隙时:

SELECT CASE 
        WHEN MOD(ROW_NUMBER() OVER(ORDER BY number), 4) = 1 THEN 'joe'
        WHEN MOD(ROW_NUMBER() OVER(ORDER BY number), 4) = 2 THEN 'jim'
        WHEN MOD(ROW_NUMBER() OVER(ORDER BY number), 4) = 3 THEN 'gill'
        WHEN MOD(ROW_NUMBER() OVER(ORDER BY number), 4) = 0 THEN 'jack'
    END
FROM t

顺便说一句,Mod不是一个公认的使用SQLServer2008的内置函数。欢迎回复。顺便说一句,Mod不是一个公认的使用SQLServer2008的内置函数。欢迎回复。顺便说一句,Mod不是一个公认的使用SQLServer2008的内置函数。顺便说一句,使用SQL Server 2008时,replyMod不是公认的内置函数。为回答干杯在这种情况下,您可以使用其他大小写语法:1时,CASE ROW_NUMBER OVERORDER BY NUMBER%4,然后是'joe'当2时,然后是'jim'当3时,然后是'gill'当0时,那么'jack'END将短得多,结果相同。在这种情况下,您可以使用其他大小写语法:1时,CASE ROW_NUMBER OVERORDER BY NUMBER BY NUMBER%4,然后是'joe'当2,然后是“jim”,当3,然后是“gill”,当0,那么“jack”端会短得多,结果相同。