Mysql 将表连接到自身以比较同一列的数据
我有一个表格,列出了项目和项目在多个阶段的状态。例如,管道经过切割、焊接、喷漆。按照表格的设置方式,它将管道列出三次,在列阶段,它将分别进行切割、焊接和喷漆 我想比较一下这一列中的表格,看看这三个阶段之间是否存在任何不一致之处 因此,如果管道仍处于切割阶段,它将显示该特定行,但如果管道处于焊接阶段,它将显示该特定行 目前的数据是:Mysql 将表连接到自身以比较同一列的数据,mysql,Mysql,我有一个表格,列出了项目和项目在多个阶段的状态。例如,管道经过切割、焊接、喷漆。按照表格的设置方式,它将管道列出三次,在列阶段,它将分别进行切割、焊接和喷漆 我想比较一下这一列中的表格,看看这三个阶段之间是否存在任何不一致之处 因此,如果管道仍处于切割阶段,它将显示该特定行,但如果管道处于焊接阶段,它将显示该特定行 目前的数据是: Unique ID Job # Stage Due Date Status 120473 Job 12 Cu
Unique ID Job # Stage Due Date Status
120473 Job 12 Cutting 1/17/17 Not Complete
120473 Job 12 Welding 1/18/17 Not Complete
120473 Job 12 Painting 1/18/17 Not Complete
120475 Job 17 Cutting 1/26/17 Complete
120475 Job 17 Welding 1/27/17 Not Complete
120475 Job 17 Painting 1/28/17 Not Complete
预期的产出将是:
Unique ID Job # Stage Due Date
120473 Job 12 Cutting 1/17/17
120475 Job 17 Welding 1/27/17
Unique ID 120475是在切割中完成的,所以它会显示焊接。显然今天是周五,因为我想得太多了 以下解决了我的问题:
select a.jobdescription, a.category, a.sequence, a.lotnumber, a.duedate, a.dpm, a.ps, a.stage, a.completed
from qiw_powerbi a
where (a.stage = "approved by client" and a.completed = "not complete") or (a.stage = "released to shop" and a.completed = "not complete")
group by a.catkey
order by a.category
以下是我的理解: 您希望每个唯一的_id都有下一个不完整的阶段 解决此问题的一种方法是使用内部联接 这是原始问题的简化版本
您可以通过添加示例输入、预期输出和解决问题的尝试来改进问题。同意@1000111。请给我们更多的信息添加一些样本输入@El Tigst添加了一些。如果你需要更多,请告诉我。感谢您的关注。列名为Status varchar type吗?
SELECT
t.*
FROM t
INNER JOIN
(
SELECT
A.unique_id,
MIN(COALESCE(B.id, A.id)) AS next_stage_id
FROM t A
LEFT JOIN t B ON A.unique_id = B.unique_id AND A.id < B.id
AND A.status='Complete' AND B.status='Not Complete'
GROUP BY A.unique_id
) AS alias
ON t.id = alias.next_stage_id;