我想使用SQL Server获得备用系列记录。
例如:
我想按顺序跳过前10条记录(1到10)并获得其他10条记录(11到20)之后我想跳过下10条记录(21到30)并获得另外10条记录(31条到31条记录) 40)
我已为替换行做了如下...
SELECT ROW, EmployeeID
FROM
(SELECT
ROW_NUMBER() OVER (ORDER BY EmployeeID) AS ROW, *
FROM Employee) A
WHERE
ROW % 2 = 0
但是,如果我的要求,上面的逻辑将无法正常工作。请帮我把上面的东西搞定..
Linq也将接受
由于
答案 0 :(得分:1)
SELECT ROW, EmployeeID
FROM
(SELECT
ROW_NUMBER() OVER (ORDER BY EmployeeID) AS ROW, *
FROM Employee) A
WHERE
((ROW - 1)/10) % 2 = 1
答案 1 :(得分:0)
我已完成上述要求,如下所示(示例)。
从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
答案 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。运行此查询后请显示错误/结果。
询问是否有任何疑问。