sql - 访问查询 - 使用条件获取最新日期
问题描述
我在表“tbldata”中有以下数据
Equipment Type Starting date Ending Date
420-413 T1 2019-06-10 2019-06-15
402-483 T2 2019-06-14 2019-06-29
446-439 T4 2019-07-20 2019-07-30
420-413 T3 2019-12-08 2019-12-12
428-421 T2 2019-08-01 2019-09-01
420-413 T2 2019-09-08 2019-10-04
我进行了查询“qryunpair”以取消配对设备中的所有匹配结果:
UnpairEquipment
402
413
420
421
428
439
446
483
我正在尝试为每种设备的每种类型设置“结束日期”的最新日期。
我有以下代码:
SELECT
qryinspection.UnpairEquipment AS Equipment,
Max(t.[Ending Date]) AS T1,
Max(t.[Ending Date]) AS T2,
Max(t.[Ending Date]) AS T3,
Max(t.[Ending Date]) AS T4
FROM
qryunpair AS qryinspection,
tbldata AS t
GROUP BY qryinspection.UnpairEquipment;
这几乎是我想要实现的目标,但它没有考虑类型,我为每种设备/类型得到相同的日期:
Equipment T1 T2 T3 T4
402 2019-06-29 2019-06-29 2019-06-29 2019-06-29
413 2019-12-12 2019-12-12 2019-12-12 2019-12-12
420 2019-12-12 2019-12-12 2019-12-12 2019-12-12
421 2019-09-01 2019-09-01 2019-09-01 2019-09-01
428 2019-09-01 2019-09-01 2019-09-01 2019-09-01
439 2019-07-30 2019-07-30 2019-07-30 2019-07-30
446 2019-07-30 2019-07-30 2019-07-30 2019-07-30
483 2019-06-29 2019-06-29 2019-06-29 2019-06-29
有解决办法吗?
解决方案
您可以使用条件聚合,例如:
select
q.unpairequipment as Equipment,
max(iif(t.type='T1',[ending date],null)) as T1,
max(iif(t.type='T2',[ending date],null)) as T2,
max(iif(t.type='T3',[ending date],null)) as T3,
max(iif(t.type='T4',[ending date],null)) as T4
from
qryunpair as q inner join tbldata as t on '-' + t.equipment + '-' like '*-' + q.unpairequipment + '-*'
group by
q.unpairequipment
以上内容基于@forpas 对您最后一个问题的回答。
推荐阅读
- ruby-on-rails - 使用 postgreSQL 13 和 Rails 6+ 搜索多个表
- mysql - MYSQL 在左连接上不是唯一的表/别名
- javascript - 使用 JavaScript Wordpress 网站更改 Href 链接。我在哪里可以编辑 Javascript?
- javascript - 为什么 child_added firebase 显示文档准备好的数据?
- android - 如何在不替换其他片段android中的内容的情况下显示片段
- angular - DI中的angularfire循环依赖
- python - 使用 Python 从图像中提取分组文本
- raku - Raku zip 运算符和空间
- alsa - 为什么 ALSA aplay 出现欠载错误(至少 .. ms)(多次重启树莓派后)
- java - 在 Intellij IDE 的 maven 项目中添加外部 jar 作为依赖项