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

SQL Server 2008 - PIVOT を使用せずに行アイテムを列に表示する

    これを試すことができますか?

    WITH A AS (SELECT HMYPERSON, HMYTENANT, SRELATIONSHIP, P.ULASTNAME, p.SFIRSTNAME, ROW_NUMBER() OVER (PARTITION BY HMYTENANT ORDER BY HMYPERSON) AS RN
                FROM ROOM R
                INNER JOIN PERSON P ON P.HMY = R.HMYPERSON  
                                    AND (R.SRELATIONSHIP <> 'Guarantor' OR P.IPERSONTYPE<>90)           
                )
    SELECT T.SCODE, T.SLASTNAME + ' ' + T.SFIRSTNAME TENANTNAME
            , A1.ULASTNAME + ' ' + A1.SFIRSTNAME ROOMMATENAME_1
            , A2.ULASTNAME + ' ' + A2.SFIRSTNAME ROOMMATENAME_2
            , A3.ULASTNAME + ' ' + A3.SFIRSTNAME ROOMMATENAME_3
            , A4.ULASTNAME + ' ' + A4.SFIRSTNAME ROOMMATENAME_4
            , A5.ULASTNAME + ' ' + A5.SFIRSTNAME ROOMMATENAME_5
    FROM TENANT T
    LEFT JOIN A A1 ON A1.HMYTENANT = T.HMYPERSON AND A1.RN=1
    LEFT JOIN A A2 ON A2.HMYTENANT = T.HMYPERSON AND A2.RN=2
    LEFT JOIN A A3 ON A3.HMYTENANT = T.HMYPERSON AND A3.RN=3
    LEFT JOIN A A4 ON A4.HMYTENANT = T.HMYPERSON AND A4.RN=4
    LEFT JOIN A A5 ON A5.HMYTENANT = T.HMYPERSON AND A5.RN=5
    WHERE T.HMYPERSON=1
    

    出力:

    SCODE TENANTNAME  ROOMMATENAME_1           ROOMMATENAME_2           ROOMMATENAME_3           ROOMMATENAME_4           ROOMMATENAME_5
    ----- ----------- ------------------------ ------------------------ ------------------------ ------------------------ ------------------------
    t0011 lName fName roommate2 roommate2Fname roommate3 roommate3Fname roommate1 roommate1Fname NULL               NULL
    



    1. PHPでアクティベーションリンクを期限切れにする方法は?

    2. selectステートメントの列の順序はクエリ速度に影響しますか?

    3. 地理空間クエリの続編:場所に最も近いn個のポイントを見つけます

    4. Oracle PL /SQLUTL_FILE.PUTバッファリング