sql - 检查 GROUP BY 中的条件?
问题描述
以这个示例数据为例:
ID Status Date
1 Pending 2/10/2020
2 Pending 2/10/2020
3 Pending 2/10/2020
2 Pending 2/10/2020
2 Pending 2/10/2020
1 Complete 2/15/2020
我需要一个 SQL 语句,它将所有数据分组但带回当前状态。因此,对于 ID 1,group by 需要一个仅返回 Completed 行并返回 ID 2 和 3 的待处理行的条件。
我不是 100% 如何在这个条件下写的。
也许是这样的:
SELECT ID, Status, Date
FROM table
GROUP BY ID, Status, Date
ORDER BY ID
问题是生成的数据如下所示:
ID Status Date
1 Pending 2/10/2020
1 Complete 2/15/2020
2 Pending 2/10/2020
3 Pending 2/10/2020
但是我需要:
ID Status Date
1 Complete 2/15/2020
2 Pending 2/10/2020
3 Pending 2/10/2020
我可以做些什么来检查 Completed 状态,以便我只能在 group by 中返回 Completed?
解决方案
只做GROUP BY
ID 列。用于MIN()
在待处理之前选择完成。
SELECT ID, MIN(Status)
FROM table
GROUP BY ID
ORDER BY ID
推荐阅读
- php - Zoho API V2 更新记录
- php - 与 Azure SQL Server 的连接不一致
- javascript - TypeError:无法读取未定义的属性“附加”
- javascript - NodeJS 和 Python 之间的通信:传回多个参数
- c++ - 不等待 std::cin.ignore()
- python - 记录器结果没有出现在 Django 的 unittest 输出中
- php - 多对多关系的 SQL 查询以在 HTML 中显示数据
- angular - 代码与 Angular 6 以及如果与 Angular 5 不兼容
- scala - Typeclass 的模棱两可的隐含值
- javascript - 在本地存储中更改数组内部的值