Bạn có thể xoay vòng dữ liệu như thế này trong bất kỳ phiên bản nào của Oracle.
SELECT id,
MAX( CASE WHEN key = 'name' THEN value ELSE null END ) name,
MAX( CASE WHEN key = 'height' THEN value ELSE null END ) height,
MAX( CASE WHEN key = 'awesomeness' THEN value ELSE null END ) awesomeness
FROM facts
WHERE id IN (1,2,3)
GROUP BY id
Nếu bạn đang sử dụng 11g, bạn cũng có thể sử dụng PVOT
nhà điều hành.
Tuy nhiên, nếu đây là đại diện cho mô hình dữ liệu của bạn, thì loại mô hình dữ liệu thuộc tính thực thể đó thường sẽ khá kém hiệu quả. Nói chung, bạn sẽ được phục vụ tốt hơn nhiều với một bảng có các cột cho name
, height
, awesomeness
, v.v.