我整天都在努力解决这个问题,并尝试了我知道的所有可能的方法。问题是:
我正在研究的领域有这样的格式:
XXX 年示例:001-2014(字符串)
假设我们有这些记录:
- 001-2014
- 011-2014
- 013-2013
我期望得到的结果是 011-2014 (换句话说,价值最大的最早年份)
我写了这个在 PostgreSql 上运行良好的查询:
select split_part(numero_bl, '-', 1) as part1,
split_part(numero_bl, '-', 2) as part2
from livraisons
ORDER BY part2 desc,part1 desc limit 1
split_part 函数将列 'numero_bl' 拆分为 2 个部分。所以结果是这样的:
第1部分| 第2部分
001 | 2014
当我尝试在 Python 代码中引入它时,它使用升序返回正确的值,但在降序时返回 ('None',)
这是我在 python 中的函数的简单版本:
def set_numero_bl(self, cr, uid, ids,name,arg,context=None):
res={}
cr.execute("""select split_part(numero_bl, '-', 1) as part1,
split_part(numero_bl, '-', 2) as part2
from livraisons
ORDER BY part2 desc,part1 desc limit 1""")
execution = cr.fetchone()
part1 = execution[0]
part2 = execution[1]
if part1:
if part2:
annee = int(part2)
nombre = int(part1)+1
valeur_final= str('%0*d' % (3, nombre))+"-"+str(annee)
for livraisons in self.browse(cr, uid, ids):
res[livraisons.id]= valeur_final
else:
valeur_final= str('%0*d' % (3, 1))+"-"+datetime.datetime.strftime(datetime.datetime.now(), '%Y')
for livraisons in self.browse(cr, uid, ids):
res[livraisons.id]= valeur_final
return res
当然,当我不放“其他条款”时,它会返回(“无”,)
请问有没有办法修复它或以任何其他方式解决它?
谢谢