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
我有一个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