我有一个包含客户帐户的电子表格,当我们获得一个新帐户时,它会使用参考帐号添加,即安德森电气将是 AND01 等。我正在尝试使用 sql 从每个字母变体中带回最高数字,例如如果 AND01 已经存在并且我们的最高公司价值是 AND34,那么它只会带回 AND34 而不是 1 到 34。
每个帐户都有公司名称的前 3 个字母,后跟下一个数字。
希望我已经很好地解释了这一点,以便有人理解:)
我有一个包含客户帐户的电子表格,当我们获得一个新帐户时,它会使用参考帐号添加,即安德森电气将是 AND01 等。我正在尝试使用 sql 从每个字母变体中带回最高数字,例如如果 AND01 已经存在并且我们的最高公司价值是 AND34,那么它只会带回 AND34 而不是 1 到 34。
每个帐户都有公司名称的前 3 个字母,后跟下一个数字。
希望我已经很好地解释了这一点,以便有人理解:)
对于单个参考帐户:
select max(AcctNum)
from Accounts
where left(AcctNum, 3) = <reference account>
如果你想要一次全部:
select left(AcctNum, 3) as ReferenceAcct, max(AcctNum)
from Accounts
group by left(AcctNum, 3)
不确定这是否是您要问的,但如果您需要找到作为字符串一部分的最大值,您可以使用子字符串来完成。因此,如果您需要从包含这些值的列中找到最高数字,您可以使用以下方法:
;WITH tmp AS(
SELECT 'AND01' AS Tmp
UNION ALL
SELECT 'AND34'
) SELECT MAX(SUBSTRING(tmp, 4, 2)) FROM tmp GROUP BY SUBSTRING(tmp, 0, 3)
这是一个返回 34 的小测试查询,因为我按前 3 个字母分组,您可能希望按某个 ID 分组。