SQL 两行之差

SQL difference of two rows

我有一个table,Table1

Table1
ID  REG  VALUE
1   54   500
2   54   1700
3   60   5000
4   60   5500

现在,我需要将此 table 中的行复制到第二个 Table2,但对于具有相同 REG 的条目,我想在第二个 table 中制作单行,最高 VALUE 和较低 VALUE 之间的差异,如下所示:

Table2
ID  REG  VALUE
1   54   1200
2   60   500

我该怎么做?

您可以使用 insert-select 语句:

INSERT INTO table2 (reg, value)
SELECT   reg, MAX(value) - MIN(value)
FROM     table1
GROUP BY reg
HAVING   COUNT(*) > 1

编辑:

如果要求也复制出现在单个 reg 行上的值,这可以使用 case 表达式来完成:

INSERT INTO table2 (reg, value)
SELECT   reg, 
         CASE COUNT(*) WHEN 1 THEN MAX(value) ELSE MAX(value) - MIN(value) END
FROM     table1
GROUP BY reg