2012-05-10 7 views
0

私は顧客アカウントを持つスプレッドシートを持っています。新しいアカウントを取得すると、参照アカウント番号を使用して追加されます。つまり、Anderson ElectricalはAND01などです。例えば、文字の各バリエーションから最も高い数値を返すSQL AND01がすでに存在し、当社の最高値がAND34であった場合、AND34が1から34ではなくAND34になります。SQLの単一列に複数の最大値を戻す

各アカウントには、会社名の最初の3文字とそれに続く数字が続きます。

私は誰かが理解するためによくenouhこれを説明しました:)

答えて

0

それはあなたが求めているものだが、あなたは文字列の一部である最大値を見つける必要がある場合は、サブストリングでそれを行うことができるかどうかわからない希望。ですから、あなたがそれを行うことができ、それらの値を含む列から最高番号を見つける必要がある場合:あなたはおそらくしたい、

;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) 

私は最初の3つの文字でグループ化していますので、34を返します少しテストクエリですIDでグループ化する単一の参照アカウントの

1

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) 
関連する問題