sql - 返回 WHERE 子句不完全匹配的行
问题描述
我提前为问题标题道歉。我真的很难写出简洁的东西!
我有一个类似于以下的表:
| Item | Date | Value |
| A | 2018-12-01 | 1 |
| B | 2018-12-01 | 2 |
| C | 2018-12-01 | 2 |
| A | 2018-12-02 | 3 |
| B | 2018-12-02 | 3 |
我想写一个查询,这样当我给它一个特定的日期时,它会为Item
表中的每个唯一值返回一行,并且它Value
在给定的日期,或者如果在给定的日期没有观察到,最后一次被观察到。
因此,对于上表,如果我提供2018-12-01
它将返回:
| Item | Date | Value |
| A | 2018-12-01 | 1 |
| B | 2018-12-01 | 2 |
| C | 2018-12-01 | 2 |
但如果我提供2018-12-02
它将返回:
| Item | Date | Value |
| A | 2018-12-02 | 3 |
| B | 2018-12-02 | 3 |
| C | 2018-12-01 | 2 |
解决方案
您可以使用distinct on
:
select distinct on (item) t.*
from t
where date <= $your_date
order by item, date desc;
推荐阅读
- python - Docker python3:找不到'__main__'模块
- reactjs - 将 props 传递给 Field validate 会给出以前的 props 值
- sql - SQL Server 中的日期排序
- ruby-on-rails - 如何将 HTML 文件存储到 Rails 模型中
- javascript - node.js 无法正确执行的问题
- php - REST API Base64 图像 imagecreatefromstring():数据不是可识别的格式
- javascript - 检测两个元素重叠点
- python - 如何将简单的线性回归与梯度下降并行化 - 使用 numpy?
- r - 文本输出显示在 Shiny 应用程序 UI 的下一行
- python - Python-docx:如何将 StringIO 图像添加到 docx 文件中?