sql输出格式为每个条目一行

ajsxfq5m  于 2021-07-27  发布在  Java
关注(0)|答案(2)|浏览(306)

我无法直接从oraclesql正确显示数据。
我有两张table。medarb带有meda\ U id和init条目,联系人带有meda\ U id、cont\ U类型和号码。
连续类型可以是“mt”或“ma”
我得到的是:

init  type number
aaaa  MT   11111111
aaaa  MA   22222222
bbbb  MT   33333333
bbbb  MA   44444444 and so on.

我想要的是:(每个人在一条线上)

aaaa mt 11111111 ma 22222222
bbbb mt 33333333 ma 44444444 and so on.

有可能吗?
sql是这样的:

select distinct medarb.init, contacts.cont_type, contacts.number
from contacts
inner join medarb on medarb.meda_id = contacts.meda_id
order by medarb.init

谨致问候

xv8emn3q

xv8emn3q1#

在这种情况下,聚合通常是有帮助的。

SQL> with test (init, type, cnumber) as
  2    (select 'aaaa', 'MT', 111 from dual union all
  3     select 'aaaa', 'MA', 222 from dual union all
  4     select 'bbbb', 'MT', 333 from dual union all
  5     select 'bbbb', 'MA', 444 from dual
  6    )
  7  select init,
  8    'MT' mttype,
  9    max(case when type = 'MT' then cnumber end) cnum_mt,
 10    'MA' matype,
 11    max(case when type = 'MA' then cnumber end) cnum_ma
 12  from test
 13  group by init
 14  order by init;

INIT MT    CNUM_MT MA    CNUM_MA
---- -- ---------- -- ----------
aaaa MT        111 MA        222
bbbb MT        333 MA        444

SQL>
3ks5zfa0

3ks5zfa02#

此联接的唯一列组合是什么?是init列还是type列?您可以尝试使用oracle pivot函数。
https://blogs.oracle.com/sql/how-to-convert-rows-to-columns-and-back-again-with-sql-aka-pivot-and-unpivot
谢谢

相关问题