Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вывод значений разных строк в одной записи 
:(
    Опции темы
avectoi
Дата 14.2.2010, 22:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 5.6.2006
Где: Великий Новгород

Репутация: нет
Всего: нет



Есть таблица d_e и d_e_prop, связаны по id_e
Нужно вывести результаты в виде
id_d,id_e,value(1),value(2),value(3),
где value(1) - value для id_prop=372
где value(2) - value для id_prop=380
где value(3) - value для id_prop=385
value(1),value(2),value(3) можно склеить в 1 строчку, главное, чтобы в 1 записи выводились.

При этом некоторые id_prop для id_e в таблице d_e_prop не существуют.

d_e        
id    id_d    id_e
1    378    25
2    378    26
3    379    27
4    380    28
5    380    29
6    380    30

d_e_prop        
id_e    id_prop    value
25    372    28.02.2009
25    380    5000
25    385    text
26    372    25.02.2009
26    380    2000
27    372    20.03.2009
27    380    
27    385    text2
…        

PM MAIL ICQ Skype   Вверх
Zloxa
Дата 15.2.2010, 10:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 53
Всего: 161



Код

SQL> with d_e as(
  2   select 1 id,378    id_d,25    id_e from dual
  3   union all select 2,    378,    26 from dual
  4   union all select 3,    379,    27 from dual
  5   union all select 4,    380,    28 from dual
  6   union all select 5,    380,    29 from dual
  7   union all select 6,    380,    30 from dual
  8  )
  9  ,d_e_prop as(
 10   select 25 id_e,    372 id_prop,   '28.02.2009' value from dual
 11   union all select 25,    380,    '5000' from dual
 12   union all select 25,    385,    'text' from dual
 13   union all select 26,    372,    '25.02.2009' from dual
 14   union all select 26,    380,    '2000' from dual
 15   union all select 27,    372,    '20.03.2009' from dual
 16   union all select 27,    380,    '' from dual
 17   union all select 27,    385,    'text2' from dual
 18  )
 19  select id_d
 20         ,max(case when id_prop=372 then value end) "value(1)"
 21         ,max(case when id_prop=380 then value end) "value(2)"
 22         ,max(case when id_prop=385 then value end) "value(3)"
 23  from d_e left join d_e_prop on d_e.id_e = d_e_prop.id_e
 24  group by id_d
 25  ;
 
      ID_D value(1)   value(2)   value(3)
---------- ---------- ---------- ----------
       380                       
       378 28.02.2009 5000       text
       379 20.03.2009            text2
 
SQL> 



--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Составление SQL-запросов | Следующая тема »


 




[ Время генерации скрипта: 0.0786 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.