所以我正在研究数据库的视图。在此视图中,它需要显示一个人拥有的所有属性,并仅显示该属性的当前所有者。它应该完成的方式是查看propertyID的购买日期,并仅显示最新的。
这是我到目前为止的代码:
CREATE VIEW P_OWNERS_AND_PROPERTIES_V AS
SELECT P_OWNER.OWNERID, P_OWNER.LNAME, P_OWNER.FNAME,
P_PURCHASE.PROPERTYID,P_PURCHASE.PURCHASEDATE
FROM P_OWNER LEFT JOIN P_PURCHASE
ON P_OWNER.OWNERID=P_PURCHASE.OWNERID
WHERE (P_PURCHASE.PURCHASEDATE = (SELECT MAX(P1.PURCHASEDATE)
FROM P_PURCHASE P1 WHERE P1.OWNERID = P_PURCHASE.OWNERID))
OR (P_PURCHASE.PROPERTYID IS NULL);
非常感谢任何帮助。
编辑:清理代码。
答案 0 :(得分:0)
以下是我要做的事情:
通过ownerid加入p_owner和p_purchase。这会为您提供一个列表,其中显示每个所有者所拥有的所有属性(即所有购买的完整列表)
然后你添加一个解析函数rownum(),你可以通过propteryid进行分区,并通过purchaseate desc进行排序。这会为每行添加一个数字,以便每个属性的最新购买获得rownum()= 1。将此列别名为“purchase_rank”。
Purchase_rank告诉您,每次购买,是否是最新的,从次到期等。
然后将整个事物包装在另一个选择中,在那里过滤“where purchase_rank = 1”,然后选择要查看的列。
无论如何,不要回避分析功能。它们可以挽救生命。