两行的SQL差异

时间:2015-11-13 16:33:19

标签: sql sql-insert

我有一张桌子,表1

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

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

Table2
ID  REG  VALUE
1   54   1200
2   60   500

我该怎么做?

1 个答案:

答案 0 :(得分:2)

您可以使用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