选择最少的多列

时间:2012-10-18 06:23:13

标签: sql sql-server sql-server-2008 tsql

我有三个名为list1,list2,list3的十进制列。 我想在一个查询中找到最少三个 我已经厌倦了这个:

SELECT Least(list1, list2, list3) 
FROM   table1 

它会抛出least无法识别功能的错误。

3 个答案:

答案 0 :(得分:6)

尝试使用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

SQLFiddle Demo

答案 1 :(得分:2)

其他解决方案,

case when col1 < col2 
     then case when col1 < col3 
               then col1
               else col3 end
     else case when col2 < col3
               then col2
               else col3 end;

答案 2 :(得分:1)

如果表格中有超过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