我在sql中有一个需求,需要根据另一列中的最小值获取值。
在本例中,我们可以看到最低金额为4900000.00,其原币为英镑。因此,对于此行,最低货币的值应设置为gbp。然后将其他行设置为unk。
有没有窗口功能可以帮助实现这一点?我尝试了first\u值,但无法将其他“非限定”行设置为unk。
预期输出为:
OriginalCurrency LowestCurrency Reference Amount
GBP GBP 2000001/001/18 4,900,000.00
EUR UNK 2000001/001/18 7,500,000.00
USD UNK 2000001/001/18 10,000,000.00
GBP UNK 2000002/001/18 5,000,000.00
EUR EUR 2000002/001/18 1,000,000.00
USD UNK 2000002/001/18 9,000,000.00
代码示例如下:
select *
from (values
('GBP','GBP','2000001/001/18',4900000)
,('EUR','UNK','2000001/001/18',7500000)
,('USD','UNK','2000001/001/18',10000000)
,('GBP','UNK','2000002/001/18',5000000)
,('EUR','EUR','2000002/001/18',1000000)
,('USD','UNK','2000002/001/18',9000000)) t
(
OriginalCurrency,
LowestCurrency,
Reference,
Amount
)
2条答案
按热度按时间njthzxwz1#
可以使用条件逻辑。如果我理解正确:
如果最低值有关系,可以使用
rank()
而不是row_number()
.voj3qocg2#