指定数量的想象一下,一个简单的查询:查询来选择行
SELECT name, lastname FROM people
让我们想象一下它返回6行。我需要做的是返回ROWS Mod 4等于0的行数。因此,如果查询通常返回6行,它应该返回2行,其中包含名称和姓氏为NULL的行。很容易计算它将返回的行并生成必要的联合选择,但是我想知道是否可以在sql中完成。我知道,听起来有点愚蠢的,你可能想告诉我要找到不同的解决方案,但这是我的问题,最简单的解决方法]
指定数量的想象一下,一个简单的查询:查询来选择行
SELECT name, lastname FROM people
让我们想象一下它返回6行。我需要做的是返回ROWS Mod 4等于0的行数。因此,如果查询通常返回6行,它应该返回2行,其中包含名称和姓氏为NULL的行。很容易计算它将返回的行并生成必要的联合选择,但是我想知道是否可以在sql中完成。我知道,听起来有点愚蠢的,你可能想告诉我要找到不同的解决方案,但这是我的问题,最简单的解决方法]
对于Oracle:
SELECT name, lastname FROM people
UNION ALL
SELECT NULL, NULL FROM people
WHERE RowNum <= (Select mod(Count(*),4) from people)
为MSSQL:(> = 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)
不幸的是,我的mssql在'where'附近给出了错误的语法错误。无论如何,我只是看着我的查询,这对我来说太复杂了。所有这些连接和声明都会变得无法阅读。我想我只是以编程方式将必要的联合添加到SQL。谢谢您的帮助! – 2010-09-01 06:21:32
你能描述一下你的问题,以达到另一个解决方案吗? – 2010-08-31 09:47:28
你的rdbms是什么? – 2010-08-31 09:52:43
你已经提供了答案。 MSSQL。谢谢,我会尝试 – 2010-08-31 10:41:02