示例表:MyTable1
Col1 | Col2 | Col3
3 10 5
10 9 40
1 2 6
输出必须是:
NewColumn
10
40
6
如您所见,我只需要从每一行中获取最高值..
是否可以仅使用 sql 选择查询?
提前致谢
示例表:MyTable1
Col1 | Col2 | Col3
3 10 5
10 9 40
1 2 6
输出必须是:
NewColumn
10
40
6
如您所见,我只需要从每一行中获取最高值..
是否可以仅使用 sql 选择查询?
提前致谢
您将需要使用 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
我想知道这是否适用于 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 中添加了对此的支持。
有效的示例:
表格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
这将适用于您需要的尽可能多的列。