2013-12-26 2 views
0

Существует таблица, в которой каждые 3 строки вместе представляет собой значимый объект как Belows:SQL: объединить 3 строки в 1

id colA key ... 
ida value1 keyA ... 
ida value2 keyB ... 
ida value3 keyC ... 
idb value4 keyA ... 
idb value5 keyB ... 
idb value6 keyC ... 

Следует сходились следующим образом (COLA к Keya, colB к KEYB, colC к ключуC):

id colA colB colC ... 
ida value1 value2 value3 ... 
idb value4 value5 value6 ... 

Полностью не знаю, как составить правильный SQL. Это могут быть два LEFT JOINs, но не могут сделать это. Пожалуйста помоги.

+0

здесь SQL может быть протестирована http://sqlfiddle.com/ – user1105115

+0

Какой RDBMS это? – Szymon

+0

Есть ли способ, не относящийся к РСУБД? если нет, Oracle можно предположить. – user1105115

ответ

2

Вы можете использовать что-то подобное (это синтаксис SQL-сервера):

select distinct id, 
    (select top 1 colA from table1 t 
    where t.[key] = 'keyA' and t.id = table1.id) as colA, 
    (select top 1 colA from table1 t 
    where t.[key] = 'keyB' and t.id = table1.id) as colB, 
    (select top 1 colA from table1 t 
    where t.[key] = 'keyC' and t.id = table1.id) as colC 
from table1 

SQL Fiddle demo

Смежные вопросы