查询以选择指定的行数

时间:2010-08-31 09:34:10

标签: sql

想象一个简单的查询:

SELECT name, lastname FROM people

让我们假设它返回6行。我需要做的是返回ROWS Mod 4等于0的行数。因此,如果查询通常会返回6行,则应该返回另外2行,其中name和lastname为NULL。很容易计算它将返回的行并生成必要的联合选择,但我想知道是否可以在sql中执行。我知道,听起来有点愚蠢,你可能正在考虑告诉我找到一个不同的解决方案,但这是我问题的最简单的解决方法;]

1 个答案:

答案 0 :(得分:2)

for oracle:

SELECT name, lastname FROM people
UNION ALL
SELECT NULL, NULL FROM people
WHERE RowNum <= (Select mod(Count(*),4) from people)

for mssql :(&gt; = 2005)

SELECT name, lastname FROM people
UNION ALL
select null, null from
(
  SELECT row_number() over(order by name) r FROM people
)
WHERE r <= (Select Count(*) % 4 from people)