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