加入收藏 | 设为首页 | 会员中心 | 我要投稿 辽源站长网 (https://www.0437zz.com/)- 云专线、云连接、智能数据、边缘计算、数据安全!
当前位置: 首页 > 站长百科 > 正文

Oracle SQL View:借助外键将多行合并到一行

发布时间:2021-03-16 02:46:32 所属栏目:站长百科 来源:网络整理
导读:我有两张桌子: 表A: pk_id,value 表B: pk_id,key,value,fk_id 例如 表a: 1,value 例如表b: 1,key1,value1,12,key2,value2,13,key3,value3,1 等等,不可能用所有键定义一个表,因为我们从另一个应用程序获取数据并且它并不总是相同并且必然会发生变化. 我

我有两张桌子:

表A:

pk_id,value

表B:

pk_id,key,value,fk_id

例如
表a:

1,value

例如表b:

1,key1,value1,1
2,key2,value2,1
3,key3,value3,1

等等,不可能用所有键定义一个表,因为我们从另一个应用程序获取数据并且它并不总是相同并且必然会发生变化.

我需要的是一个视图(或者如果可能通过其他方式,我也不介意)显示如下数据:

id,key3
1,value3

所以与表A中的一行连接的所有内容都显示在一行中.从表B中定义应该在视图中显示的键是可能的.

提前致谢.

解决方法

试试这个查询.这会对你有所帮助.

SELECT a.pk_id,a.value,MAX(CASE WHEN b.key='key1' THEN b.value ELSE '0' END) AS key1,MAX(CASE WHEN b.key='key2' THEN b.value ELSE '0' END) AS key2,MAX(CASE WHEN b.key='key3' THEN b.value ELSE '0' END) AS key3
FROM table_b b 
LEFT OUTER JOIN table_a a on a.pk_id = b.fk_id
GROUP BY b.fk_id,a.pk_id,a.value
ORDER BY b.fk_id ASC

(编辑:辽源站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读