【发布时间】:2020-11-25 14:52:42
【问题描述】:
我有这样的表格:
表 1 - 人:
m_id | name |
-------------
22 | jo |
-------------
77 | john |
--------------
表 2 - AMT_DATA
m_id | amt | activity |
-------------------------
22 | 100 | - |
-------------------------
77 | 300 | n |
-------------------------
表 3 - STATUS_DATA:
m_id | status | s_date |
22 | first | 01.01.2000 |
22 | second | 01.01.2001 |
22 | third | 01.01.2002 |
77 | first | 01.01.2001 |
77 | third | 01.01.2002 |
对于一个 m_id,表 STATUS_DATA 中可以有更多行。
我有这个选择,但它会为一个 m_id 返回多行。
SELECT PERSON.M_ID, PERSON.NAME, AMT_DATA.AMT, AMT_DATA.ACTIVITY, STATUS_DATA.STATUS, STATUS_DATA.S_DATE FROM PERSON
INNER JOIN AMT_DATA.M_ID ON AMT_DATA.M_ID = PERSON.M_ID
INNER JOIN STATUS_DATA.M_ID ON STATUS_DATA.M_ID = PERSON.M_ID
WHERE (AMT_DATA.ACTIVITY = '-');
我能否以某种方式获得一行中一个 m_id 的结果?像这样:
person_id | person_name | amt_data.amt | amt_data.activity | status_data.status1 | status_data.s_date1 | .... |status_data.statusN | status_data.s_dateN
谢谢
【问题讨论】:
-
您需要对数据进行透视。在 Oracle 数据库的 stackoverflow 中搜索枢轴
标签: sql oracle plsql pivot dynamic-pivot