Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Составление SQL-запросов > Вывод значений разных строк в одной записи


Автор: avectoi 14.2.2010, 22:45
Есть таблица 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
…        

Автор: Zloxa 15.2.2010, 10:45
Код

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> 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)