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

前端之家收集整理的这篇文章主要介绍了Oracle SQL View:借助外键将多行合并到一行前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有两张桌子:

表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

猜你在找的Oracle相关文章