2015-09-03 64 views
0

我有一個非常簡單的查詢,從表中選擇前3個代碼,我想將它們作爲單獨的列值存儲在臨時表中,或者讀入單獨的聲明字段。SQL Select Top 3 into separate列

前3名查詢:

select top 3 code 
from table1 t1 (NOLOCK) 
join table2 t2 (NOLOCK) on t1.codeid = t2.codeid 
where t2.recordid = '123456789' 
and t1.codetype = '987654' 

結果:

code 
    1111 
    2222 
    3333

首選的輸出:

code1  code 2  code3 
    1111  2222  3333

我也可以去其他的東西,如:

Declare @code1 as varchar(4) 
Declare @code2 as varchar(4) 
Declare @code3 as varchar(4) 
DECLARE RULE_CURSOR CURSOR STATIC FOR 
{select statement here} 

OPEN RULE_CURSOR 
    FETCH NEXT FROM RULE_CURSOR into @code1, @code2, @code3 

如果有人能幫我解決問題,那麼Declare和Fetch就是我的首選方法。

謝謝!

回答

0

我想我想通了,從一個單獨的文章中,我曾詢問有關以前:

DECLARE RULE_CURSOR CURSOR STATIC FOR 
     WITH cte 
     AS (SELECT top 3 code, ROW_NUMBER() over(order by code) rn 
      from Table1 T1 (NOLOCK) 
      join table2 t2 (NOLOCK) on t1.codeid = t2.codeid 
      where t2.recordid = '123456789' 
      and t1.codetype = '987654') 
SELECT [1] AS Code1 , 
     [2] AS Code2 , 
     [3] AS Code3 
FROM cte PIVOT(MAX(code) FOR rn IN ([1], [2], [3])) a 
     Open RULE_CURSOR 
    FETCH NEXT FROM RULE_CURSOR into @code1, @code2, @code3