2011-12-24 2 views
2

руководство, если это возможно.Таблица MySql Заказ по значениям с разделительной строкой

enter image description here

мне нужен результат таблицы следующим образом

RAJ1 RAJ2 ARUN MUTHU 
----------------------- 
86  74 45 null 
74  86 45 null 
null 74 45 86 

Я не знаю, с чего начать реализовывать это, по процедуре или обычным запросом.

+1

Объедините каждый столбец в один длинный список, разделив имя, значение на 2 столбца, затем поверните его по имени. производительность будет медленной из-за манипуляции с строкой, но это то, что происходит, когда мы имеем денормализованные данные. – xQbert

ответ

1
SELECT 
    COALESCE(
    IF(LEFT(subj1,4)='RAJ1', SUBSTRING(subj1,6), NULL), 
    IF(LEFT(subj2,4)='RAJ1', SUBSTRING(subj2,6), NULL), 
    IF(LEFT(subj3,4)='RAJ1', SUBSTRING(subj3,6), NULL)) as RAJ1, 
    COALESCE(
    IF(LEFT(subj1,4)='RAJ2', SUBSTRING(subj1,6), NULL), 
    IF(LEFT(subj2,4)='RAJ2', SUBSTRING(subj2,6), NULL), 
    IF(LEFT(subj3,4)='RAJ2', SUBSTRING(subj3,6), NULL)) as RAJ2, 
    COALESCE(
    IF(LEFT(subj1,4)='ARUN', SUBSTRING(subj1,6), NULL), 
    IF(LEFT(subj2,4)='ARUN', SUBSTRING(subj2,6), NULL), 
    IF(LEFT(subj3,4)='ARUN', SUBSTRING(subj3,6), NULL)) as ARUN, 
    COALESCE(
    IF(LEFT(subj1,5)='MUTHU', SUBSTRING(subj1,7), NULL), 
    IF(LEFT(subj2,5)='MUTHU', SUBSTRING(subj2,7), NULL), 
    IF(LEFT(subj3,5)='MUTHU', SUBSTRING(subj3,7), NULL)) as MUTHU 
FROM thetable;