select t.* from BSL_POLICY_EDR T LEFT JOIN BSL_POLICY_EDR T1 ON T.POLICY_NO=T1.OLD_POLICY_NO AND T1.ENDORSE_NO = '----' 可以怎么改写
时间: 2024-11-12 08:41:26 浏览: 13
TI.DM642EVM.BSL.Code.rar_BSL_dm642 b
这个SQL查询是从名为BSL_POLICY_EDR的表中选择所有列,并通过LEFT JOIN连接另一个同名表BSL_POLICY_EDR,连接条件是当T表的POLICY_NO等于T1表的OLD_POLICY_NO,同时T1表的ENDORSE_NO等于'----'时。这是一个查找旧策略编号(OLD_POLICY_NO)为'----'的所有记录的情况。
你可以将此查询简化并增强可读性,例如,如果ENDORSE_NO是一个常量,可以将其直接作为WHERE子句的一部分,如下所示:
```sql
SELECT T.*
FROM BSL_POLICY_EDR T
LEFT JOIN BSL_POLICY_EDR T1 ON T.POLICY_NO = T1.OLD_POLICY_NO
WHERE T1.ENDORSE_NO = '----'
```
如果ENDORSE_NO不是一个硬编码值,而是需要动态传入的,可以在查询前使用变量或者函数来存储该值,然后替换'----':
```sql
DECLARE @endorseNoVariable NVARCHAR(50) = '----';
SELECT T.*
FROM BSL_POLICY_EDR T
LEFT JOIN BSL_POLICY_EDR T1 ON T.POLICY_NO = T1.OLD_POLICY_NO
WHERE T1.ENDORSE_NO = @endorseNoVariable
```
阅读全文