我需要从名为Sequence的列中选择最大值,即varchar。值列为1-1,1-2,1-3,2-1,2-2,2-3,3-1,3-2,3-3等。如何删除&# 34; - " (并在必要时转换为int)以便能够使用max功能?目前,尝试选择max(Sequence)会返回所有记录。
SELECT MAX(regexp_replace(Sequence, '-', '')), Policy
FROM Transactions
WHERE Policy = '1234'
GROUP BY Policy
引发以下错误:
错误[42S02]错误:功能' REGEXP_REPLACE(VARCHAR,UNKNOWN, UNKNOWN)'不存在无法识别满足的功能 给定的参数类型您可能需要添加显式的类型转换* /
示例表:
期望的结果:
答案 0 :(得分:1)
也许你可以使用字符串maximum:
SELECT MAX(Sequence), Policy
FROM Transactions
WHERE Policy = '1234'
GROUP BY Policy;
这适用于所提供的数据。如果由于您有'1-10'
之类的值而无法正常工作,那么您可以将其转换为浮点数或小数:
SELECT MAX(REPLACE(Sequence, '-', '.')::numeric), Policy
FROM Transactions
WHERE Policy = '1234'
GROUP BY Policy;