Bạn có cần sử dụng PIVOT
không ?, bởi vì một cách đơn giản cho việc này là sử dụng CASE
biểu thức:
SELECT id,
MIN(CASE WHEN displayName = 'User SID' THEN stringValue END) [User SID],
MIN(CASE WHEN displayName = 'User Name' THEN stringValue END) [User Name],
MIN(CASE WHEN displayName = 'Last Login' THEN dateValue END) [Last Login]
FROM YourTable
GROUP BY id
Đây là kết quả:
╔══════════════════════════════════════╦══════════╦═══════════╦════════════╗
║ ID ║ USER SID ║ USER NAME ║ LAST LOGIN ║
╠══════════════════════════════════════╬══════════╬═══════════╬════════════╣
║ EBD6F18D-3CD3-4134-8FFB-7620D3EA93DF ║ SID2 ║ User 2 ║ 2012-01-10 ║
║ 59FAA56C-4C0C-456E-BA68-AC63250D6281 ║ SID-122 ║ My User ║ 2012-01-01 ║
╚══════════════════════════════════════╩══════════╩═══════════╩════════════╝
Và đây là sqlfiddle có bản demo để bạn dùng thử.