C# 在SQL Server中获取备用记录系列
我想使用SQL Server获取备用记录系列 例如: 我想按顺序跳过前10条记录1到10,然后得到其他10条记录11到20,然后我想跳过下10条记录21到30,再得到下10条记录31到40 我已经做了如下交替行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
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