Как получить минимальное минимальное значение строки в sql

Я хочу получить минимальное значение строки в MS SQL, как в таблице ниже. У меня минимальное значение 4, в выходном столбце будет напечатано 4.

Col1 Col2 Col3 Output
6 4 5 4

person Muhammad Irtiza    schedule 05.02.2021    source источник


Ответы (4)


Здесь был дан ответ: Что лучше как выбрать минимальное значение из нескольких столбцов?

Использование CROSS APPLY:

SELECT ID, Col1, Col2, Col3, MinValue
FROM YourTable
CROSS APPLY (SELECT MIN(d) AS MinValue FROM (VALUES (Col1), (Col2), (Col3)) AS a(d)) A

SQL Fiddle

person Naivre    schedule 05.02.2021
comment
Это работает спасибо - person Muhammad Irtiza; 05.02.2021
comment
:) Я стою на плечах гигантов! - person Naivre; 05.02.2021

Вы можете использовать CROSS APPLY и MIN следующим образом:

SELECT MIN(x.cols) AS least_ --, MAX(x.cols) AS greatest_
FROM   your_table t
CROSS APPLY ( VALUES ( t.col1 ), ( t.col2 ), ( t.col3 ), ( t.col4 )) AS x ( cols );
person Popeye    schedule 05.02.2021
comment
Этот оператор вернет минимальное значение для всей таблицы, а не для каждой строки. - person Zhorov; 05.02.2021
comment
Тогда OP может использовать GROUP BY t.pkcolumn - person Popeye; 05.02.2021

Для этого используйте выражение CASE:

DECLARE @T TABLE( COL1 INT ,COL2 INT ,COL3 INT )
Insert into @T Values(6,4,5)

SELECT CASE WHEN COL1 < COL2 AND COL1 < COL3 THEN COL1 
            WHEN COL2 < COL1 AND COL2 < COL3 THEN COL2 
            WHEN COL3 < COL1 AND COL3 < COL2 THEN COL3 END 
FROM @T
person Thiyagu    schedule 05.02.2021

Этого можно достичь с помощью выражения вложенного CASE также следующим образом:

select 
Col1,
Col2,
Col3,
Case 
    When (Col1 > Col2 AND Col1 > Col3 )
        Then Col1
    else 
        Case 
            When (Col2 > Col3)
                Then Col2
            else 
                Col3
        END
END as  Output
from
TableName
person Teja Goud Kandula    schedule 05.02.2021