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

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

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

  1. init type number
  2. aaaa MT 11111111
  3. aaaa MA 22222222
  4. bbbb MT 33333333
  5. bbbb MA 44444444 and so on.

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

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

有可能吗?
sql是这样的:

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

谨致问候

xv8emn3q

xv8emn3q1#

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

  1. SQL> with test (init, type, cnumber) as
  2. 2 (select 'aaaa', 'MT', 111 from dual union all
  3. 3 select 'aaaa', 'MA', 222 from dual union all
  4. 4 select 'bbbb', 'MT', 333 from dual union all
  5. 5 select 'bbbb', 'MA', 444 from dual
  6. 6 )
  7. 7 select init,
  8. 8 'MT' mttype,
  9. 9 max(case when type = 'MT' then cnumber end) cnum_mt,
  10. 10 'MA' matype,
  11. 11 max(case when type = 'MA' then cnumber end) cnum_ma
  12. 12 from test
  13. 13 group by init
  14. 14 order by init;
  15. INIT MT CNUM_MT MA CNUM_MA
  16. ---- -- ---------- -- ----------
  17. aaaa MT 111 MA 222
  18. bbbb MT 333 MA 444
  19. 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
谢谢

相关问题