我的表MARKS中有两个列(DES1,DES2),我想从这两个列中找到MAXIMUM(对于两列中的每一行)标记并将最大标记输入到另一列(DES),如果这两列具有相同的数据,然后将相同的数据输入到 [MS ACCESS] 中的列 (DES)
表标记
DES1
34
23
30
DES2
22
40
30
我的表MARKS中有两个列(DES1,DES2),我想从这两个列中找到MAXIMUM(对于两列中的每一行)标记并将最大标记输入到另一列(DES),如果这两列具有相同的数据,然后将相同的数据输入到 [MS ACCESS] 中的列 (DES)
表标记
34
23
30
22
40
30
这是另一种方法:
UPDATE Marks
SET Des = (SELECT Max(v) FROM (VALUES (Des1), (Des2)) AS value(v))
如果您有一堆要比较的列,这可能会更清晰,否则我会使用 CASE 语句。这也适用于空值。
此外,这只适用于 >= SQL 2008
这是我一起快速完成的事情,但尚未经过测试:
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
使用CASE
声明:
UPDATE Marks
SET Des = CASE WHEN Des1 > Des2 OR Des2 IS NULL THEN Des1 ELSE Des2 END