2017-08-30 19 views

回答

0

我相信你需要用數字表作爲起點。然後,您可以將其連接到數字表以實現此結果。

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名,但您可以更改查詢以滿足您的需求。

0

一種方法只是追加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; 
0

我結束了使用排過函數首先,然後在表後面接合。像魅力一樣工作。感謝您的幫助!