指定數量的想象一下,一個簡單的查詢:查詢來選擇行
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