下面是我正在处理的样本表
表1
╔════╦══════════════╦══════╗
║ KID║ REV ║ REDO ║
╠════╬══════════════╬══════╣
║ 1 ║ 43453453345 ║ 2 ║
║ 1 ║ 2433423423 ║ 1 ║
║ 2 ║ 23423423 ║ 1 ║
║ 2 ║ 5566533 ║ 2 ║
╚════╩══════════════╩══════╝我需要选择REV从表1中使用code和REDO,然后放入表2E 212,这样我就可以得到如下结果。
表2
╔════╦══════════════╦════════════╗
║ KID║ REDO1 ║ REDO2 ║
╠════╬══════════════╬════════════║
║ 1 ║ 43453453345 ║2433423423 ║
║ 2 ║ 23423423 ║ 5566533 ║
╚════╩══════════════╩════════════╝所有REV's和REDO=1都必须属于REDO1,REV与重做e 225=2必须在E 126REDO2E 227>下,所有E 128 come E 229都不是唯一的。如何用简单的mysql实现这一点?
发布于 2015-06-18 10:02:03
可以使用以下查询生成所需的结果集:
SELECT KID,
MAX(CASE WHEN REDO = 1 THEN REV) AS REDO1,
MAX(CASE WHEN REDO = 2 THEN REV) AS REDO2
FROM Table1
GROUP BY KID上述方法使用条件聚合,以便将与REDO = 1值关联的所有REDO = 1值放在REDO1输出字段下,并将与REDO = 2值关联的所有REV值放置在REDO2输出字段下。
如果要将上述结果插入Table2,可以使用INSERT INTO SELECT语句:
INSERT INTO Table2
SELECT KID, MAX(CASE WHEN REDO = 1 THEN REV END),
MAX(CASE WHEN REDO = 2 THEN REV END)
FROM Table1
GROUP BY KID;Demo here
https://stackoverflow.com/questions/30912124
复制相似问题