【发布时间】:2014-01-13 15:06:33
【问题描述】:
我有 2 个 SQL Server 表
equip_info
equip_id | asset_no
-------------------
1 | CAL-1
2 | MIC-1
...
equip_insp
insp_id | equip_id | insp_name | due_date
----------------------------------------------
1 | 1 | Calibration | 2014-01-10
2 | 1 | Maintenance | 2014-01-10
3 | 1 | Check | 2014-02-10
4 | 2 | Calibration | 2014-11-04
5 | 2 | Maintenance | 2014-05-04
...
equip_id 没有 2 个相似的 insp_name,但这并不重要。
一句话,我想帮助我了解用于获取不同设备列表的 T-SQL 语法以及“下一个”检查或检查(如果到期日期相同)和到期日期。
可能会出现在同一个到期日期有多个检查的情况,因此在这种情况下,必须将其连接起来并显示在一个字段中(例如:“校准、维护”)
这个查询的结果应该是这样的:
equip_id | asset_no | inspection | due_date
-----------------------------------------------------------
1 | CAL-1 | Calibration, Maintenance | 2014-01-10
2 | MIC-1 | Maintenance | 2014-05-04
【问题讨论】:
-
加入两个表。搜索谷歌关于加入和阅读。你可以解决你的问题。
-
为什么
Checkinsp_name 没有包含在您的结果表中? -
因为“检查”的
due_date不是最早/下一个到期日。equip_id = 1最早的due_date是10/01/2014 -
@Shiva 所以你需要最早的
due_date为每个equip_id和不同的insp_name在这个due_date的CSV 列表中? -
是的,看起来这就是
OP想要的。我构建了架构并填充了表格。这是小提琴,如果你想解决它并完成这个练习:) sqlfiddle.com/#!3/4fdff/2
标签: sql-server sql-server-2008 tsql syntax jointable