从单个表中的两列(仅来自一个表)获取最大数据MS ACCESS

时间:2012-06-14 13:22:57

标签: sql sql-server sqlite ms-access ms-access-2007

我的表MARKS中有两个列(DES1,DES2),我想找到这两个列中的MAXIMUM(对于两列中的每一行)标记,并将最大标记输入到另一列(DES),如果两列具有相同的数据,然后将相同的数据输入[MS ACCESS]

中的列(DES)

表MARKS

DES1

34

23

30

DES2

22

40

30

3 个答案:

答案 0 :(得分:1)

这是另一种方法:

UPDATE Marks
SET Des = (SELECT Max(v) FROM (VALUES (Des1), (Des2)) AS value(v))

如果要比较一堆列,这可能会更清晰,否则我会使用CASE语句。这也适用于空值。

此外,这仅适用于> = SQL 2008

答案 1 :(得分:0)

这是我很快就在一起的事情,但尚未经过测试:

DECLARE @DES     INT
SELECT @DES = (CASE WHEN MAX(DES1) = MAX(DES2) THEN MAX(DES1)
                    WHEN MAX(DES1) > MAX(DES2) THEN MAX(DES1)
                    ELSE MAX(DES2)
               END)
FROM Marks

...use @DES for your insert

答案 2 :(得分:0)

使用CASE声明:

UPDATE  Marks
SET     Des = CASE WHEN Des1 > Des2 OR Des2 IS NULL THEN Des1 ELSE Des2 END