我有以下数据
| PERSON_ID | OBJECT_ID | VALUE |
|-----------|-----------|--------|
| 1000 | 5511 | blue |
| 1000 | 5512 | green |
| 1001 | 6655 | purple |
| 1001 | 6656 | yellow |
| 1001 | 6657 | orange |
我想制作一张表:
| PERSON_ID | OBJECT_ID1 | VALUE1 | OBJECTID2 | VALUE2 | OBJECTID3 | VALUE3 |
|-----------|------------|--------|-----------|--------|-----------|--------|
| 1000 | 5511 | blue | 5512 | green | (null) | (null) |
| 1001 | 6655 | purple | 6656 | yellow | 6657 | orange |
有什么想法吗?
答案 0 :(得分:0)
如果你知道每个PERSON_ID的最大OBJECT_ID值是多少,试试这个。只需添加更多联接,直到达到最大OBJECT_ID值:
select
p.PERSON_ID,
o1.OBJECT_ID OBJECT_ID1,
o1.VALUE VALUE1,
o2.OBJECT_ID OBJECT_ID2,
o2.VALUE VALUE2,
o3.OBJECT_ID OBJECT_ID3,
o3.VALUE VALUE3
from (select distinct PERSON_ID from t_person_object) p
left join t_person_object o1
on o1.PERSON_ID = p.PERSON_ID
left join t_person_object o2
on o2.PERSON_ID = p.PERSON_ID
and o2.OBJECT_ID > o1.OBJECT_ID
left join t_person_object o3
on o3.PERSON_ID = p.PERSON_ID
and o3.OBJECT_ID > o2.OBJECT_ID
group by
p.PERSON_ID;