样本表:MyTable1
Col1 | Col2 | Col3
3 10 5
10 9 40
1 2 6
输出必须是:
NewColumn
10
40
6
如您所见,我只需要从每一行获得最高价值。
是否可以通过使用sql select查询?
提前致谢
答案 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
这将适用于您需要的任意数量的列。