2

list1、list2、list3 という名前の 3 つの 10 進数列があります。1 回のクエリで最小 3 つを見つけたい。
私はこれに疲れました:

SELECT Least(list1, list2, list3) 
FROM   table1 

least関数が認識されないというエラーがスローされます。

4

3 に答える 3

7

使ってみてください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デモ

于 2012-10-18T06:24:50.550 に答える
4

他の解決策、

case when col1 < col2 
     then case when col1 < col3 
               then col1
               else col3 end
     else case when col2 < col3
               then col2
               else col3 end;
于 2012-10-18T06:42:46.477 に答える
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
于 2012-10-18T08:18:03.340 に答える