SQL获取每行的Max Column值

时间:2012-05-24 14:01:57

标签: sql ms-access-2007

样本表:MyTable1

Col1    |    Col2     |     Col3
   3           10            5
  10           9             40
   1           2             6

输出必须是:

NewColumn
    10
    40
     6

如您所见,我只需要从每一行获得最高价值。

是否可以通过使用sql select查询?

提前致谢

3 个答案:

答案 0 :(得分:2)

您需要使用MS Access功能IIF()

IIF(condition, valueiftrue, valueiffalse)
  

条件是您要测试的值。

     

valueiftrue是条件计算结果时返回的值   TRUE。

     

valueiffalse是条件计算结果时返回的值   FALSE。

所以你的查询将是

SELECT IIf(C12 > Col3, C12, Col3) as newColumn
FROM
(
    select IIF(Col1 > Col2,  Col1,  Col2) as C12, Col3
    from mytable1
) x

答案 1 :(得分:0)

我想知道这是否适用于MS Access(无法验证自己,我害怕):

SELECT
  (
    SELECT MAX(Col)
    FROM (
      SELECT Col1 AS Col UNION ALL
      SELECT Col2        UNION ALL
      SELECT Col3
    ) s
  ) AS NewColumn
FROM yourtable

这适用于同一供应商的其他系列数据库产品,因此我认为他们可能恰好也在MS Access中添加了对此的支持。

答案 2 :(得分:0)

有效的例子:

<强>表1:

Col - Text
Col1 - Number
Col2 - Number
Col3 - Number
Col4 - Number

数据:

col; col1; col2; col3; col4;
a;      1;    4;    6;    7;
b;      3;   66;   23;  235;
c;     34;  634;   11;   23;

<强>查询:

SELECT Col, Max(colx) AS MaxOfColx
FROM 
(
SELECT Col, Col1 AS Colx From Table1 UNION ALL
SELECT Col, Col2 AS Colx From Table1 UNION ALL
SELECT Col, Col3 AS Colx From Table1 UNION ALL
SELECT Col, Col4 AS Colx From Table1
)
group by Col

<强>结果:

Col; MaxOfColx
 a;          7
 b;        235
 c;        634

这将适用于您需要的任意数量的列。