如何筛选未在FACA类型文档的DocDOrigine中出现的有效BLA文档?
问题:筛选未关联FACA类型文档的有效BLA文档
表结构
表1:Document
| Doc_Num | Doc_Type | Doc_Date | Doc_Valide |
|---|---|---|---|
| BLA241913 | BLA | 01/07/2024 | 1 |
表2:DocumentD
| Doc_Num | DocDOrigine |
|---|---|
| BLA241913 | CMA241682 |
尝试的查询语句
SELECT * FROM Documentd INNER JOIN [Document] ON DocumentD.Doc_Num = [Document].Doc_Num WHERE ([Document].Doc_Type IN (N'bla', N'faca')) AND (DocumentD.DocD_QReliquat >= 0) AND ([Document].Doc_Date BETWEEN '2024-07-01' AND '2024-07-31')
当前查询结果
| Doc_Num | Doc_Type | Doc_Date | DocDOrigine | Doc_Valide |
|---|---|---|---|---|
| BLA241913 | BLA | 01/07/2024 | CMA241682 | 1 |
| BLA241913 | BLA | 01/07/2024 | CMA241682 | 1 |
| BLA241913 | BLA | 01/07/2024 | CMA241682 | 1 |
| BLA241914 | BLA | 01/07/2024 | CMA241683 | 1 |
| BLA241914 | BLA | 01/07/2024 | CMA241683 | 1 |
| BLA241915 | BLA | 01/07/2024 | CMA241684 | 1 |
| BLA241916 | BLA | 01/07/2024 | CMA241685 | 1 |
| BLA241917 | BLA | 01/07/2024 | CMA241686 | 0 |
| ACHAT240730008 | FACA | 01/07/2024 | BLA241913 | 2 |
| ACHAT240730008 | FACA | 01/07/2024 | BLA241913 | 2 |
| ACHAT240730008 | FACA | 01/07/2024 | BLA241913 | 0 |
| ACHAT240730010 | FACA | 01/07/2024 | BLA241914 | 0 |
| ACHAT240730010 | FACA | 01/07/2024 | BLA241914 | 1 |
| ACHAT240731025 | FACA | 01/07/2024 | null | 1 |
需求
筛选满足以下条件的[Document].Doc_num数据:
[Document].Doc_Type= 'BLA' 且[Document].Doc_Valide= 1- 该文档未出现在类型为'FACA'的
[Document]记录关联的DocDOrigine字段中
期望结果
| Doc_Num | Doc_Type | Doc_Date | DocDOrigine | Doc_Valide |
|---|---|---|---|---|
| BLA241915 | BLA | 01/07/2024 | CMA241684 | 1 |
| BLA241916 | BLA | 01/07/2024 | CMA241685 | 1 |
解决方案
使用NOT EXISTS子查询实现需求,SQL语句如下:
SELECT d.Doc_Num, d.Doc_Type, d.Doc_Date, dd.DocDOrigine, d.Doc_Valide FROM [Document] d INNER JOIN DocumentD dd ON d.Doc_Num = dd.Doc_Num WHERE d.Doc_Type = 'BLA' AND d.Doc_Valide = 1 AND NOT EXISTS ( SELECT 1 FROM [Document] faca_d INNER JOIN DocumentD faca_dd ON faca_d.Doc_Num = faca_dd.Doc_Num WHERE faca_d.Doc_Type = 'FACA' AND faca_dd.DocDOrigine = d.Doc_Num )
说明
- 主查询先筛选所有有效(
Doc_Valide=1)的BLA类型文档,并关联DocumentD获取DocDOrigine字段 NOT EXISTS子查询检查当前BLA文档是否被任何FACA类型文档的DocDOrigine引用,未被引用的记录将被保留
内容的提问来源于stack exchange,提问作者MOHAMED NEJI
相关产品推荐
相关产品推荐

