为标题道歉。解释不清楚。
我遇到了一个问题,我不确定这里的最佳方法是什么。请参见表图片。在此数据集中,我需要在prd 2列中查找日期prd 1 date。如果找到了,我需要查看dense_rnk列减1,然后获取VAL列中的值。
例如:找到4/10,dense_rnk为4减1等于3。输出列中需要的值为Z,因为它对应于dense_rnk 3。应该由prd 1上的日期驱动。
有没有我可以在oracle中使用的excel offset可比函数?我添加了window函数,以为会有帮助,但它让一切变得更加复杂。
这可能吗?我很感激你的帮助。
2条答案
按热度按时间6jygbczu1#
这是一个两步查找,因此
1.在
cte_rnk_val
中创建第一个查找(dense_rnk
,val
)1.在
cte_prd2_rank
中创建第二个查找(id
,prd2
,rnk
)1.将所有三个连接在一起以获得输出
输出量:
已在MySQL中测试查询。
sc4hvdpw2#
试试这个。你可能需要翻译成Oracle,因为它是为SSMS格式化的。
请注意,这个解决方案相当糟糕,使用原始表可能比使用提供的结果集做得更好。