に文字と混合された最大値を取得する方法:私は、テーブルは次のように定義されているのSQLServer
Name Value
----- -----
Alice MN21
Bob MN22
iは
select Name,MAX(Value) as Value from #Character
のような最大値を取得したいし、それが表示されます
Name Value
---- -----
Bob MN22
に文字と混合された最大値を取得する方法:私は、テーブルは次のように定義されているのSQLServer
Name Value
----- -----
Alice MN21
Bob MN22
iは
select Name,MAX(Value) as Value from #Character
のような最大値を取得したいし、それが表示されます
Name Value
---- -----
Bob MN22
シンプルさが
select top 1 Name,Value from #Character order by Value desc
シンプルさが最高です! –
すると、以下のように同じ形式の数字のみを取得するためにSUBSTRINGを使用することができ、この
select Name,Value from #Character where value in (
select MAX(CAST(value AS int)) from #Character)
をお試しください:
SELECT TOP(1)
Name,
Value,
SUBSTRING(Value,3,LEN(Value)) AS MaxValue
FROM @tblTest order by CAST(SUBSTRING(Value,3,LEN(Value)) AS INT) DESC
エラーを報告していませんか?値の長さを指定して3桁目から始めると、範囲外になります。 –
私はすでにそれが同じフォーマットに従っていることを確認しています。常に最初の2文字の文字列と数値があります。 –
OPでの確認には常に文字列の最初の2文字があるのでエラーは発生しません –
この
select Name,MAX(Value REGEXP '[0-9]{5}') as Value from #Character
を試してみてください、あなたのような何かが必要ですこの?
CREATE TABLE #CH (NAME VARCHAR(20), VALUE VARCHAR(10))
INSERT INTO #CH VALUES ('Alice', 'MN21'), ('Bob', 'MN22'), ('Angie', 'AO42'),('Karl', 'AO27');
SELECT NAME, MAXVAL, VALUE
FROM #CH
INNER JOIN (SELECT SUBSTRING(VALUE,1,2) AS LEFTPART, MAX(SUBSTRING(VALUE,3,2)) AS MAXVAL
FROM #CH
GROUP BY SUBSTRING(VALUE,1,2)) B ON #CH.VALUE = B.LEFTPART+B.MAXVAL
Output:
NAME MAXVAL VALUE
-------------------- ------ ----------
Bob 22 MN22
Angie 42 AO42
あなたの値の形式は2つだけの文字列と、その後数のように同じまま最高のでしょうか? –
@SandipPatel Yep –
2つの値を比較する論理は何ですか? – TriV