我尝试将行从一个数据库导出到Excel,并且我一次只能限制为65000行。这告诉我我正在使用Access数据库,但我不确定,因为这是一个查询能力有限的第三方应用程序(MRI Netsource)。我已经尝试了在此解决方案中发布的选项(Is there a way to split the results of a select query into two equal halfs?),但它们都没有起作用 - 实际上,它们最终会重复结果而不是将它们减少一半。
一个可能相关的问题是该表没有唯一的ID字段。每个记录的唯一ID可以通过多个文本字段的串联动态形成。
这会产生91934结果:
SELECT * from note
这会产生122731结果:
SELECT * FROM (
SELECT *, ROW_NUMBER() OVER (ORDER BY notedate) AS rn FROM note
) T1
WHERE rn % 2 = 1
编辑:同样,这会产生91934个结果,其中一半的tile_nr值为1,另一半的值为2:
SELECT *, NTILE(2) OVER (ORDER BY notedate) AS tile_nr FROM note
然而,这会产生122778个结果,所有结果的tile_nr值都为1:
SELECT bldgid, leasid, notedate, ref1, ref2, tile_nr
FROM (
SELECT *, NTILE(2) OVER (ORDER BY notedate) AS tile_nr FROM note) x
WHERE x.tile_nr = 1
我知道我可以使用COUNT来获取确切的记录数,使用TOP 65000 ORDER BY注释运行一个查询,然后另一个使用TOP 26934 ORDER BY注明DESC,但是当这个数据集发生变化时我很喜欢某种方法来自动化这个以节省时间。