返回存在于一个表中但不在另一个表中的结果

彼得博纳尔

我有一个查询,我需要返回表 A 的所有实例,匹配表 B 中的特定结果集,但即使在表 B 中没有匹配项的情况下,我仍然想要表 A 中的结果,但是表 B 结果的空值。例如:

Table A
Person1 | Date1 |  Info1
Person2 | Date2 |  Info2 
Person4 | Date4 |  Info4

Table B
Person2 | Details2
Person3 | Details3
Person5 | Details5

Desired result
Person1 | Date1 | Info1 | NULL
Person2 | Date2 | Info2 | Details2
Person4 | Date4 | Info4 | NULL

目前,我的报告完成了我需要的大部分工作,但它无法恢复任何实例,例如 Person1 和 Person4。它不会带回表 2 中没有匹配结果的实例。我认为这是因为 where 子句。我试过使用 LEFT JOIN,但显然这不起作用。我也尝试过使用 UNION 但无济于事。

任何帮助,将不胜感激!

SELECT t1.[Person1]
  , t1.[forename] 
  , t1.[surname] 
  ,CONVERT(VARCHAR(10), t1.[aDate], 103) + ' '  + convert(VARCHAR(8), t1.[aDate], 14) Admit
  ,CONVERT(VARCHAR(10), t1.[disDate], 103) + ' '  + convert(VARCHAR(8), t1.[disDate], 14) Discharge
  , t1.[wa] 
  , t1.[sp] 
  , t2.title 
  ,CONVERT(VARCHAR(10), t2.DocDate, 103) + ' '  + convert(VARCHAR(8), t2.DocDate, 14) DocDate
FROM [DB1].[dbo].[table1] t1
JOIN [DB2].[dbo].[table2] t2
ON t1. Person1 = t2. Person2
WHERE CAST(t2.DocDate AS DATE) BETWEEN CAST(t1.aDate AS DATE) and 
CAST(t1.disDate AS DATE)
AND t2.title like '%ischarg%'
ORDER BY t1.Person1 ASC, t1.aDate DESC
戈登·利诺夫

你想要一个LEFT JOIN. 您必须注意过滤条件:

SELECT . . .
FROM [DB1].[dbo].[table1] t1 LEFT JOIN
     [DB2].[dbo].[table2] t2
      ON t1. Person1 = t2. Person2 AND
         CAST(t2.DocDate AS DATE) BETWEEN CAST(t1.aDate AS DATE) and 
CAST(t1.disDate AS DATE) AND
         t2.title like '%ischarg%'
ORDER BY t1.Person1 ASC, t1.aDate DESC;

第二个上的任何条件都需要进入ON条件。只有第一个表上的条件才能放在WHERE子句中。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

SQL 只返回存在于另一个表中的 id

来自分类Dev

要求记录存在,如果它们存在于MySQL的另一个表中

来自分类Dev

如果该值存在于另一个表中,则从该表返回另一个值

来自分类Dev

如果一个表不存在于另一个表中,该如何删除

来自分类Dev

列值必须存在于另一个表的非主列中

来自分类Dev

MySQL查询按存在于另一个表中

来自分类Dev

列值必须存在于另一个表的非主列中

来自分类Dev

MySQL 查询不存在于另一个表中

来自分类Dev

FirebaseRecyclerAdapter 检查 Id 是否存在于另一个表中

来自分类Dev

order by 列存在于另一个表中并删除多余的行

来自分类Dev

如果所有记录都存在于SQL Server的另一个表中,则返回行列表

来自分类Dev

交叉表存在于一个数据库中,而不存在于另一个数据库中

来自分类Dev

查找表中存在于另一个表中的行的百分比?

来自分类Dev

如果标识符不存在于另一个表中,则删除表中的行

来自分类Dev

如果数据存在于另一个表中,如何从表中获取数据 C# LINQ

来自分类Dev

返回表中的所有行,并用新列指示它们是否存在于另一个表中

来自分类Dev

返回表中的所有行,并用新的列指示它们是否存在于另一个表中

来自分类Dev

如果该行存在于另一个Datable中,则从该数据表中删除该行

来自分类Dev

SQL记录存在于另一个具有LEFT JOIN和GROUP BY的表中

来自分类Dev

SQL-如何根据用户是否存在于另一个表中来选择该用户?

来自分类Dev

SQL记录存在于另一个具有LEFT JOIN和GROUP BY的表中

来自分类Dev

如果该数据不存在于另一个表中,该如何选择该数据?

来自分类Dev

angular 5 和 firebase/angularfire,使用键检查键是否存在于另一个表中

来自分类Dev

从一个表中选择行,其中值存在于另一个表的数组中

来自分类Dev

如果外键存在于另一个表中,如何仅从一个集合中获取值

来自分类Dev

Excel-查看我的Excel工作表中A列中的值是否存在于另一个Excel工作表中的B列中

来自分类Dev

mysqli查询2个表,但仅检索结果而不在另一个表中

来自分类Dev

如何检查结果数组元素是否存在于另一个结果数组中

来自分类Dev

PostgreSQL-如果另一个表中存在字段值,则返回结果

Related 相关文章

  1. 1

    SQL 只返回存在于另一个表中的 id

  2. 2

    要求记录存在,如果它们存在于MySQL的另一个表中

  3. 3

    如果该值存在于另一个表中,则从该表返回另一个值

  4. 4

    如果一个表不存在于另一个表中,该如何删除

  5. 5

    列值必须存在于另一个表的非主列中

  6. 6

    MySQL查询按存在于另一个表中

  7. 7

    列值必须存在于另一个表的非主列中

  8. 8

    MySQL 查询不存在于另一个表中

  9. 9

    FirebaseRecyclerAdapter 检查 Id 是否存在于另一个表中

  10. 10

    order by 列存在于另一个表中并删除多余的行

  11. 11

    如果所有记录都存在于SQL Server的另一个表中,则返回行列表

  12. 12

    交叉表存在于一个数据库中,而不存在于另一个数据库中

  13. 13

    查找表中存在于另一个表中的行的百分比?

  14. 14

    如果标识符不存在于另一个表中,则删除表中的行

  15. 15

    如果数据存在于另一个表中,如何从表中获取数据 C# LINQ

  16. 16

    返回表中的所有行,并用新列指示它们是否存在于另一个表中

  17. 17

    返回表中的所有行,并用新的列指示它们是否存在于另一个表中

  18. 18

    如果该行存在于另一个Datable中,则从该数据表中删除该行

  19. 19

    SQL记录存在于另一个具有LEFT JOIN和GROUP BY的表中

  20. 20

    SQL-如何根据用户是否存在于另一个表中来选择该用户?

  21. 21

    SQL记录存在于另一个具有LEFT JOIN和GROUP BY的表中

  22. 22

    如果该数据不存在于另一个表中,该如何选择该数据?

  23. 23

    angular 5 和 firebase/angularfire,使用键检查键是否存在于另一个表中

  24. 24

    从一个表中选择行,其中值存在于另一个表的数组中

  25. 25

    如果外键存在于另一个表中,如何仅从一个集合中获取值

  26. 26

    Excel-查看我的Excel工作表中A列中的值是否存在于另一个Excel工作表中的B列中

  27. 27

    mysqli查询2个表,但仅检索结果而不在另一个表中

  28. 28

    如何检查结果数组元素是否存在于另一个结果数组中

  29. 29

    PostgreSQL-如果另一个表中存在字段值,则返回结果

热门标签

归档