我的表名为Name | ValueA | ValueB.1 | ValueB,2其中Name不唯一。
我想为每个名称提取低和高A值的B.1和B.2值。
我想要一个具有唯一名称的新表,其中包含高和低ValueA,ValueB.1,ValueB.2
我记得有一些方法可以使用min / max,但我不知道如何设置查询来提取新表。
答案 0 :(得分:2)
INSERT newtable (Name, ValueA, ValueB.1, ValueB.2)
SELECT Name,MAX(ValueA),MIN(ValueA),MAX(ValueB.1),MIN(Value B.1),
MAX(ValueB.2),MIN(ValueB.2)
FROM oldtable GROUP BY Name
应该做的伎俩。
答案 1 :(得分:0)
假设A
的值不同(至少在name
内):
INSERT
INTO newtable
SELECT name, mmin.a, mmax.a, mmin.b1, mmin.b2, mmax.b1, mmax.b2
FROM (
SELECT name, MIN(a) mina, MAX(a) maxa
FROM mytable
GROUP BY
name
) md
JOIN mytable mmin
ON (mmin.name, mmin.a) = (md.name, md.mina)
JOIN mytable mmax
ON (mmin.name, mmin.a) = (md.name, md.maxa)