2014-02-19 91 views
-3

,我有以下數據移動獨特的SQL行ID爲列

| 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

您需要'PIVOT'。但是在基表中沒有任何東西可以轉動。你使用的是什麼RDBMS? –

+0

這是一種假設,但我會猜測MySQL。 – user3330445

回答

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;