sql >> データベース >  >> RDS >> Sqlserver

SQLServer2008でのPIVOTの使用

    実際には、クライアントでこれを行う方がよいでしょう。 Reporting Servicesを使用していると仮定し、最初の結果セットに従ってデータを取得し、マトリックスを使用して表示します。行グループにauthor_idとreview_id、列グループにquestion_id、中央にMAX(answer_id)があります。

    クエリは実行可能ですが、今すぐ動的SQLが必要です。

    ...次のようなもの:

    DECLARE @QuestionList nvarchar(max);
    SELECT @QuestionList = STUFF(
    (SELECT ', ' + quotename(question_id)
    FROM YourTable
    GROUP BY question_id
    ORDER BY question_id
    FOR XML PATH(''))
    , 1, 2, '');
    
    DECLARE @qry nvarchar(max);
    SET @qry = '
    SELECT author_id, review_id, ' + @QuestionList + 
    FROM (SELECT author_id, review_id, question_id, answer_id
          FROM YourTable
         ) 
    PIVOT
    (MAX(AnswerID) FOR question_id IN (' + @QuestionList + ')) pvt
    ORDER BY author_id, review_id;';
    
    exec sp_executesql @qry;
    


    1. 2つのクラスタリング要因の物語

    2. Postgresql:MacOSXを使用してpg_hba.confファイルを見つける方法

    3. SQLServerセキュリティ関数HAS_Permis_BY_Nameとそのユースケースを理解する

    4. sysdateでのto_date関数の問題