2016-05-24 5 views
0

私はSQLで次の表を移調するクエリを設計しようとしています:トランスポーズ2 SQL行

|Name| |Type| 
    A  X 
    B  X 
    C  Y 
    D  Y 
    E  Z 

出力に:

|X| |Y| |Z| 
A C E 
B D <Blank> 

しかし、私は終わるすべてピボットまたは最大のケースステートメントで取得する:

|X| |Y| |Z| 
    A Null Null 
    B Null Null 
    Null C Null 
    Null D Null 
    Null Null E 

これは可能ですか?前もって感謝します;あなたの代わりにROW_NUMBERのDENSE_RANKを使用することになり、あなたが重複し、[名前]、[タイプ]レコードを持って何らかの理由で

SELECT MAX(CASE WHEN Type = 'X' THEN Name END), 
     MAX(CASE WHEN Type = 'Y' THEN Name END), 
     MAX(CASE WHEN Type = 'Z' THEN Name END) 
FROM (
    SELECT Name, Type, 
     ROW_NUMBER() OVER (PARTITION BY Type ORDER BY (SELECT NULL)) AS rn 
FROM mytable) AS t 
GROUP BY rn 

答えて

0

これを試してみてください。これはPIVOTバージョンです。

SELECT [X], [Y], [Z] 
FROM (
    SELECT [Name], [Type], 
      DENSE_RANK() OVER(PARTITION BY [Type] ORDER BY [Name]) Rn 
    FROM Table1) t 
PIVOT (
    MAX([Name]) 
    FOR [Type] IN ([X], [Y], [Z])) p 
+0

ありがとうございました。私が探していたものです。ソリューションは完璧に機能しました。 – SQALEX101

+0

@ SQALEX101喜んで私は助けて、スタックオーバーフローを歓迎することができました。あなたの問題を解決するのに役立ちましたら、これを記入してください。 –

0

た場合にのみ1を見てみたい:

関連する問題