Я хочу получить минимальное значение строки в MS SQL, как в таблице ниже. У меня минимальное значение 4, в выходном столбце будет напечатано 4.
Col1 | Col2 | Col3 | Output |
---|---|---|---|
6 | 4 | 5 | 4 |
Я хочу получить минимальное значение строки в MS SQL, как в таблице ниже. У меня минимальное значение 4, в выходном столбце будет напечатано 4.
Col1 | Col2 | Col3 | Output |
---|---|---|---|
6 | 4 | 5 | 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
Вы можете использовать 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 );
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
Этого можно достичь с помощью выражения вложенного 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