2017-12-19 11 views
0

行番号データを第1列に、奇数行番号を第2列に追加するには、ヘルプが必要です。あなたが参照している場合、SQL Server 2008/SQLサーバー2008 R2 ...偶数行番号データを第1列に、奇数行番号データを第2列にどのように追加するか?

id  Data 
1  TK104 
2  ABC 
3  TK106 
4  XYZ 

を使用してLIKE

NAME   VALUE 
TK104   ABC 
TK106   XYZ 
+0

隙間なく、行の必ず偶数を含めることはできませんか?自己参加する。 – jarlh

答えて

0

私は全くわからないんだけどOUTPUTを探してテンポラリテーブルに移動しますが、これが意味する場合:

CREATE TABLE #ReturnData (Column1 VARCHAR(50), Column2 VARCHAR(50)) 

INSERT INTO #ReturnData (Column1, Column2) (
    SELECT 
    CASE WHEN MyTable.ID % 2 = 0 THEN CONVERT(VARCHAR, whateverdata) ELSE '' END, 
    CASE WHEN MyTable.ID % 2 > 0 THEN CONVERT(VARCHAR, whateverdata) ELSE '' END 
    FROM MyTable 
) 


SELECT * FROM #ReturnData 
DROP TABLE #ReturnData 

これは、最初の列でも、2番目の奇数にもなります。私たちデシベルのの1のテーブルからの例:あなたはどこのid =私のid =私は1 +レコードを持つレコードを参加したいようなあなたの例に基づいて

(106 rows affected) 
Column1           Column2 
-------------------------------------------------- ------------------------ 
652             
                653 
654             
                655 
0

、それが見えます。もしそうなら、あなたはその基準に表を自己結合する必要があります

SELECT A.Data NAME, B.Data VALUE 
FROM Example A FULL JOIN Example B -- Self-join. Using a FULL join in case of gaps 
ON A.id + 1 = B.id 
AND B.id % 2 = 1 --Make sure that Value is odd 
AND A.id % 2 = 0 --Name is even 
+1

'...とB.id%2 = 1'(フル・ユアー・ジョインを維持する) – jarlh

+0

@jarlhのコメントは修正されました。 – zambonee

1

あなたidは「ギャップ」の使用row_number()と条件付き集約

select 
    max(case when rn % 2 = 0 then data end) as name, 
    max(case when rn % 2 = 1 then data end) as value 
from 
(
    select *, 
     row_number() over (order by id) as rn 
    from your_table 
) 
group by rn/2 
関連する問題