MurugappanCTS Ответов: 5

как выбрать максимальное значение из нескольких столбцов в sql server 2000


У меня есть три колонки с именем
mark1,mark2,mark3 (например:80,86,69) , мне нужно выбрать максимальные значения из этих трех значений и поместить их в новый столбец what is the sql query for selecting maximum values among multiple columns please hellp me........

5 Ответов

Рейтинг:
43

Maciej Los

Это должно сработать:

SELECT MAX(T.Age) AS MaxOfAge
FROM (
    SELECT mark1 AS Age
    FROM YourTable 
    UNION ALL
    SELECT mark2 AS Age
    FROM YourTable
    UNION ALL
    SELECT mark3 As Age
    FROM YourTable) AS T


Идея: извлеките данные из 3-х разных столбцов в один, а затем получите максимум ;)


Sandeep Mewara

Мои 5! Хорошо, Мак.

Maciej Los

Спасибо, Сандип ;)

Рейтинг:
32

Prasad_NC

SELECT (select MAX(myval) from (values (mark1),(mark2),(mark3)) as D(myval)) AS 'MaxMarks'
   FROM
   YourTable


Рейтинг:
2

Aadhar Joshi

Пожалуйста, используйте эту пользовательскую функцию табличного значения, чтобы разделить вашу строку, а затем применить max.

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER FUNCTION [dbo].[Split] 
(    
 @String varchar(max) 
,@Delimiter char 
) 
RETURNS @Results table 
( 
 Ordinal int 
,StringValue varchar(max) 
) 
as 
begin 
 
    set @String = isnull(@String,'') 
    set @Delimiter = isnull(@Delimiter,'') 
 
    declare 
     @TempString varchar(max) = @String 
    ,@Ordinal int = 0 
    ,@CharIndex int = 0 
 
    set @CharIndex = charindex(@Delimiter, @TempString) 
    while @CharIndex != 0 begin      
        set @Ordinal += 1        
        insert @Results values 
        ( 
         @Ordinal 
        ,substring(@TempString, 0, @CharIndex) 
        )        
        set @TempString = substring(@TempString, @CharIndex + 1, len(@TempString) - @CharIndex)      
        set @CharIndex = charindex(@Delimiter, @TempString) 
    end 
 
    if @TempString != '' begin 
        set @Ordinal += 1  
        insert @Results values 
        ( 
         @Ordinal 
        ,@TempString 
        ) 
    end 
 
    return 
end

Чтобы проверить свой код
Select MAX(dbo.Split("YourString"))


Примечание: оператор Cast или Convert требуется в случае строки..

Пожалуйста, проголосуйте, если он удовлетворен..!!


ssd_coolguy

я думаю, что это не одна струна. это 3 разных столбца.
ваша функция верна, когда вводится значение '90,75,80'

Рейтинг:
0

ssd_coolguy

попробуйте выполнить следующий запрос:-

select 
case when marks1 > marks2 and marks1 > marks3 then marks1
     when marks2 > marks1 and marks2 > marks3 then marks2
else marks3 
end
from
exam


Рейтинг:
0

Member 14970667

Я бы подумал, что вы просто используете столбцы в подзапросе:


выбрать *, 'Максвеллову' = (выбрать Макс(значение) от (выберите "значение" = Союз mark1 все выберите Марк2 объединить все выбрать mark3)значения i0)
из [tablename]


CHill60

Именно такая техника использовалась в решении 3 восемь лет назад. Я приветствую Ваше желание помочь, но, пожалуйста, убедитесь, что вы привносите что-то новое в тему, прежде чем публиковать дополнительные решения