2010-08-31 76 views
0

指定數量的想象一下,一個簡單的查詢:查詢來選擇行

SELECT name, lastname FROM people 

讓我們想象一下它返回6行。我需要做的是返回ROWS Mod 4等於0的行數。因此,如果查詢通常返回6行,它應該返回2行,其中包含名稱和姓氏爲NULL的行。很容易計算它將返回的行並生成必要的聯合選擇,但是我想知道是否可以在sql中完成。我知道,聽起來有點愚蠢的,你可能想告訴我要找到不同的解決方案,但這是我的問題,最簡單的解決方法]

+0

你能描述一下你的問題,以達到另一個解決方案嗎? – 2010-08-31 09:47:28

+0

你的rdbms是什麼? – 2010-08-31 09:52:43

+0

你已經提供了答案。 MSSQL。謝謝,我會嘗試 – 2010-08-31 10:41:02

回答

2

對於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) 
+0

不幸的是,我的mssql在'where'附近給出了錯誤的語法錯誤。無論如何,我只是看着我的查詢,這對我來說太複雜了。所有這些連接和聲明都會變得無法閱讀。我想我只是以編程方式將必要的聯合添加到SQL。謝謝您的幫助! – 2010-09-01 06:21:32