【发布时间】:2021-10-27 17:29:52
【问题描述】:
我的查询有问题(使用 SQL Developer)。我有两张桌子 PERSON 和 DEVICE。 PERSON(person_id,姓名) DEVICE (device_id, person_id, device, version, udt)
加入的数据如下所示:
但我希望它看起来像这样:
所以基本上我想为每个人设置一行,并且该行需要包含所有设备和最近更新 (udt) 的设备的不同 udt 的详细信息 (Device_newest ) 及其版本 (Latest_version)。
我设法接近这个查询:
select
PERSON.name,
max(case when SOFTWARE.device = 'mobile' then udt end) as mobile_udt,
max(case when SOFTWARE.device = 'computer' then udt end) as computer_udt,
max(case when SOFTWARE.device = 'laptop' then udt end) as laptop_udt
from SOFTWARE
left join PERSON on PERSON.person_id = SOFTWARE.person_id
group by PERSON.name
但它没有 Device_newest 和 Latest_version。我该怎么办?我很确定这是可行的。感谢您的帮助!
【问题讨论】:
-
您可以使用
PIVOT子句(techonthenet.com/oracle/pivot.php)。如果你愿意,我可以把它写成答案。
标签: sql oracle group-by pivot case