Sql 在3个表中顺序查找多条记录的特定字符串,并按最新条目显示
我有3个表,其中我需要按顺序搜索特定字符串“%sell back%”,并根据我首先找到它的位置获取最新条目。下面列出了更多详细信息 表3,3个表如下:Sql 在3个表中顺序查找多条记录的特定字符串,并按最新条目显示,sql,sql-server,ssms,Sql,Sql Server,Ssms,我有3个表,其中我需要按顺序搜索特定字符串“%sell back%”,并根据我首先找到它的位置获取最新条目。下面列出了更多详细信息 表3,3个表如下: |---------------|---------------|------------|-----------------------|-----------------------|------------| | CustomerID | CustomerName | ProblemId | ProblemDescription
|---------------|---------------|------------|-----------------------|-----------------------|------------|
| CustomerID | CustomerName | ProblemId | ProblemDescription | EventReason | EventDate |
|---------------|---------------|------------|-----------------------|-----------------------|------------|
| 1234 | Johnathan | 3178765 | | Accepted as sell back | 2019-10-05 |
|---------------|---------------|------------|-----------------------|-----------------------|------------|
表1:客户
|---------------|---------------|
| CustomerID | CustomerName |
|---------------|---------------|
| 1234 | Johnathan |
|---------------|---------------|
表2:问题
|---------------|---------------|----------------------|---------------|
| ProblemID | CustomerID | ProblemDescription | DateReported |
|---------------|---------------|----------------------|---------------|
| 3203494 | 1234 | Needs Appointment | 2019-08-01 |
------------------------------------------------------------------------
| 3178766 | 1234 | Sell Back Customer | 2019-08-12 |
------------------------------------------------------------------------
| 3178765 | 1234 | | 2019-08-12 |
|---------------|---------------|----------------------|---------------|
表3:问题事件
|---------------|---------------|----------------------|---------------|
|ProblemEventID | ProblemID | EventReason | EventDate |
|---------------|---------------|----------------------|---------------|
| 1926144 | 3178766 | Reported | 2019-08-12 |
------------------------------------------------------------------------
| 2022750 | 3178766 | sell back | 2019-08-13 |
------------------------------------------------------------------------
| 2022751 | 3178766 | Accepted as sell back| 2019-08-26 |
------------------------------------------------------------------------
| 2022899 | 3178766 | Finalized | 2019-08-31 |
------------------------------------------------------------------------
| 1926200 | 3178765 | Reported | 2019-09-15 |
------------------------------------------------------------------------
| 2022626 | 3178765 | sell back | 2019-09-20 |
------------------------------------------------------------------------
| 2024500 | 3178765 | Accepted as sell back| 2019-09-30 |
------------------------------------------------------------------------
| 2024501 | 3178765 | Finalized | 2019-10-05 |
|---------------|---------------|----------------------|---------------|
我要查找的结果应按照下列步骤顺序提取:
步骤1
在问题表的ProblemDescription列中搜索“%sell back%”字符串(如果存在),然后选择具有最新报告日期的相应问题ID并继续执行步骤2
步骤2
在问题事件表中搜索步骤1中选择的相应问题ID,并检查问题事件表的EventReason列中是否存在“%sell back%”字符串,然后选择最新条目
并显示如下
|---------------|---------------|------------|-----------------------|-----------------------|------------|
| CustomerID | CustomerName | ProblemId | ProblemDescription | EventReason | EventDate |
|---------------|---------------|------------|-----------------------|-----------------------|------------|
| 1234 | Johnathan | 3178766 | Sell Back Customer | Accepted as sell back | 2019-08-26 |
|---------------|---------------|------------|-----------------------|-----------------------|------------|
如果对于步骤2,在问题事件表的EventReason列中未找到字符串“%sell back%”,则应显示问题事件表中相应问题ID的最新行
交替顺序:
如果第1步搜索“%sell back%”字符串未产生任何结果,即ProblemDescription列不包含“%sell back%”字符串,则直接在中搜索同一字符串“%sell back%”
问题事件表,然后选择最新条目,并按如下方式显示结果:
|---------------|---------------|------------|-----------------------|-----------------------|------------|
| CustomerID | CustomerName | ProblemId | ProblemDescription | EventReason | EventDate |
|---------------|---------------|------------|-----------------------|-----------------------|------------|
| 1234 | Johnathan | 3178765 | | Accepted as sell back | 2019-10-05 |
|---------------|---------------|------------|-----------------------|-----------------------|------------|
我希望获取多个客户记录~10K记录的结果
非常感谢您的帮助。您可以使用行号尝试下面的解决方案。这是你的电话号码 输出:
*-------------------------------------------------------------------------------------------------*
| customerID customerName problemID problemDescription eventReason eventDate |
*-------------------------------------------------------------------------------------------------*
| 1234 Johnathan 3178766 Sell Back Customer Accepted as sell back 2019-08-26 |
*-------------------------------------------------------------------------------------------------*
这与您之前的问题有何不同?@SMor在这个问题中,我希望首先扫描问题表并查找“%sell back%”标记,然后在问题事件表中找到最新的“%sell back%”条目。而在上一个问题中,我只是在问题事件表中查找“%sell back%”标记。Hi@Zeelous感谢您的帮助,但此查询没有在问题表中找到PorbleDescription为空但问题事件表中相应的problemid存在“%sell back%”标记的行。