C# 在SQL Server中获取备用记录系列

C# 在SQL Server中获取备用记录系列,c#,sql,sql-server,entity-framework,linq,C#,Sql,Sql Server,Entity Framework,Linq,我想使用SQL Server获取备用记录系列 例如: 我想按顺序跳过前10条记录1到10,然后得到其他10条记录11到20,然后我想跳过下10条记录21到30,再得到下10条记录31到40 我已经做了如下交替行 SELECT ROW, EmployeeID FROM (SELECT ROW_NUMBER() OVER (ORDER BY EmployeeID) AS ROW, * FROM Employee) A WHERE ROW % 2

我想使用SQL Server获取备用记录系列

例如:

我想按顺序跳过前10条记录1到10,然后得到其他10条记录11到20,然后我想跳过下10条记录21到30,再得到下10条记录31到40

我已经做了如下交替行

SELECT ROW, EmployeeID 
FROM
    (SELECT 
         ROW_NUMBER() OVER (ORDER BY EmployeeID) AS ROW, * 
     FROM Employee) A 
WHERE 
    ROW % 2 = 0
但在我的情况下,上述逻辑将不起作用。请帮我把上面的事情做好

Linq也将被接受


谢谢

我已经完成了您的上述要求,如下面的示例

从1到1200依次生成1200个数字,如下所示

;WITH CTE
AS
(
SELECT 1 PERIOD_SID
UNION ALL
SELECT PERIOD_SID+1 FROM CTE WHERE PERIOD_SID<1200
)
SELECT * INTO #PERIOD1 FROM CTE
OPTION(MAXRECURSION 0)
在此之后,我找到了你在查询中提到的其他数字

SELECT PERIOD_SID FROM 
(
SELECT CASE
         WHEN PERIOD_SID%10 <> 0 THEN PERIOD_SID / 10
         WHEN PERIOD_SID%10 = 0 THEN ( PERIOD_SID / 10 ) - 1
       END RNO,
       PERIOD_SID
FROM   #PERIOD1 )A
WHERE RNO%2=0
所以,如果查询中有序列号,如果没有使用rownumber生成,则应用上述逻辑

您的查询需要进行如下转换

SELECT EMPLOYEEID
FROM  (SELECT Row_number()
                OVER (
                  ORDER BY EMPLOYEEID)AS ROW,
              *
       FROM   EMPLOYEE) A
WHERE  ( CASE
           WHEN RNO%10 <> 0 THEN RNO / 10
           WHEN RNO%10 = 0 THEN ( RNO / 10 ) - 1
         END )%2 = 0 

也许你可以试试这个

SELECT ROW, EmployeeID FROM(
SELECT ROW_NUMBER()OVER (ORDER BY EmployeeID)AS ROW,* FROM Employee)
A WHERE ((ROW - (ROW%10))/10) % 2 = 1
不管这是否有效,请不要这样做,因为我没有运行sql server。请在运行此查询后显示错误/结果


询问是否有任何疑问。

添加带有预期输出的样本数据!这正是我想要的谢谢!但你的回答有一个小错误。所以我得到了错误的结果。请将你的答案与被接受的答案进行比较。是的,当然。正如我说的,我没有sql server来运行这个。
SELECT ROW, EmployeeID 
FROM
    (SELECT 
         ROW_NUMBER() OVER (ORDER BY EmployeeID) AS ROW, * 
     FROM Employee) A 
WHERE 
    ((ROW - 1)/10) % 2 = 1