混合了角色,我已經定義了這樣的一個表最大值:如何獲得已在SQLSERVER
Name Value
----- -----
Alice MN21
Bob MN22
我想得到這樣
select Name,MAX(Value) as Value from #Character
的最大值,它會顯示
Name Value
---- -----
Bob MN22
任何想法?
混合了角色,我已經定義了這樣的一個表最大值:如何獲得已在SQLSERVER
Name Value
----- -----
Alice MN21
Bob MN22
我想得到這樣
select Name,MAX(Value) as Value from #Character
的最大值,它會顯示
Name Value
---- -----
Bob MN22
任何想法?
簡單是最好的
select top 1 Name,Value from #Character order by Value desc
簡單是最好的! –
試試這個
select Name,Value from #Character where value in (
select MAX(CAST(value AS int)) from #Character)
您可以使用SUBSTRING只得到數字爲如下相同的格式:
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,你會超出範圍。 –
我已經確認它遵循相同的格式,總是有前兩個字符的字符串,然後數字 –
我沒有得到錯誤,因爲與OP確認總是有前兩個字符串 –
試試這個
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
你的價值格式保持同樣喜歡只有兩個字符串,然後是多少? –
@SandipPatel是的 –
你有什麼邏輯來比較兩個值? – TriV