是否有辦法獲取至少X行?即使查詢返回0行。 例如,如果一個表總共有3行,我該如何做一個SELECT TOP 10從該表中返回3行,其中有數據和7行都是空值?當查詢不返回任何行時,至少返回X行(空行,直到行數爲X)
我環視了一下,但找不到我正在尋找的確切答案。我使用SQL Server 2012 謝謝!
是否有辦法獲取至少X行?即使查詢返回0行。 例如,如果一個表總共有3行,我該如何做一個SELECT TOP 10從該表中返回3行,其中有數據和7行都是空值?當查詢不返回任何行時,至少返回X行(空行,直到行數爲X)
我環視了一下,但找不到我正在尋找的確切答案。我使用SQL Server 2012 謝謝!
我相信你需要用數字表作爲起點。然後,您可以將其連接到數字表以實現此結果。
WITH CTE_numbers AS (--using a cte as an example of a numbers table
SELECT 1 as rn
UNION ALL
SELECT 2
UNION ALL
SELECT 3)
,
cte_Top as(--Query to select top X number of records
SELECT TOP 3 'testdata' r,ROW_NUMBER() OVER(ORDER BY column) as rn
FROM Table)
SELECT *
FROM CTE_numbers cb
LEFT JOIN cte_Top ct
ON cb.rn = ct.rn
即使使用'TOP'的查詢在結果中沒有等量的行,這應該會給你正確的行數。我使用前3名而不是前10名,但您可以更改查詢以滿足您的需求。
一種方法只是追加10個空行,然後選擇從整個結果集10行:
select top 10 t.*
from ((select top 10 t.*, 0 as which from t)
union all
(select t.*, v.n
from (values (1), (2), (3), (4), (5), (6), (7), (8), (9), (10)) v(n) left join
t
on 0 = 1
)
) t
order by which;
我結束了使用排過函數首先,然後在表後面接合。像魅力一樣工作。感謝您的幫助!