【发布时间】:2012-10-08 12:54:46
【问题描述】:
我有三个名为 list1、list2、list3 的十进制列。
我想在单个查询中找到三个中的最小值。
我已经厌倦了:
SELECT Least(list1, list2, list3)
FROM table1
它会抛出一个错误,least 是无法识别的函数。
【问题讨论】:
标签: sql sql-server sql-server-2008 tsql
我有三个名为 list1、list2、list3 的十进制列。
我想在单个查询中找到三个中的最小值。
我已经厌倦了:
SELECT Least(list1, list2, list3)
FROM table1
它会抛出一个错误,least 是无法识别的函数。
【问题讨论】:
标签: sql sql-server sql-server-2008 tsql
尝试使用UNION
SELECT MIN(x.a)
FROM
(
SELECT list1 a FROM table1
UNION
SELECT list2 a FROM table1
UNION
SELECT list3 a FROM table1
) x
更新 1
SELECT ID,MIN(x.a)
FROM
(
SELECT ID,list1 a FROM table1
UNION
SELECT ID,list2 a FROM table1
UNION
SELECT ID,list3 a FROM table1
) x
GROUP BY ID
【讨论】:
LEAST函数。
其他解决方案,
case when col1 < col2
then case when col1 < col3
then col1
else col3 end
else case when col2 < col3
then col2
else col3 end;
【讨论】:
如果表格中有超过 1 行,这将起作用
select c.mlist from table1 a
cross apply
(
select min(list1) mlist from
(
select list1
union all
select list2
union all
select list3
) b
) c
【讨论】: