【问题标题】:get Value that does not exist in another table and vice versa获取另一个表中不存在的值,反之亦然
【发布时间】:2015-07-14 19:42:57
【问题描述】:

我有两个名为 lu_timepoint 的表,其中包含默认时间点和另一个名为 tbl_data 的操作表。 tbl_data 包含有关候选人的详细信息以及他必须来进行实验室测试的时间点。时间点范围为 -30 分钟到 24 小时

lu_timepoint 表是默认时间点的查找表。 我需要编写一个查询来检查tbl_data 中的时间点是否存在于lu_timepoint 表中,如果不存在,我需要在名为checked 的列中将该值设置为false。 同样,如果 lu_timepoint 表中的时间点在 tbl_data 表中不存在,我需要在检查的列中将值设置为 false。在选中的列中为 true。

我尝试使用左连接,但是由于连接语句不正确,我得到了更多的行数。 下面是我用来获取时间点不等于另一个表的所有候选ID的代码

   select  distinct PT, PCTPT 
    from tbl_data s 
    left join lu_Timepoint t 
    on s.STUDY = t.Study 
    where s.PCTPT = t.Timepoint 

数据附在以下链接中... Table Data

【问题讨论】:

  • 提供您正在使用的 RDBMS(MySQL、Postegre、SQL-Server)、示例数据和所需结果。
  • 你能提供更多关于你的表结构的细节吗?
  • @StanislovasKalašnikovas-我正在使用 SQL 2012
  • @kaonashi 我已经在 Dropbox 中上传了数据。

标签: sql sql-server sql-server-2012


【解决方案1】:

如果您想获取连接表中不存在的记录,反之亦然,您可以使用 FULL OUTER JOIN 来显示每个表中的不同值。

指定您正在使用的数据库并提供表结构和一些数据将有助于构建最终查询。

【讨论】:

    【解决方案2】:

    我已经找到了解决方案。我对 lu_timepoint 表和 tbl_data 进行了左连接,得到了两个表中都不存在的值。

    以下是我使用的查询。

    select Candidate, CPEVENT, Test_Number, DosedTime, DoseTime, ExpectedTime, s.Timepoint as tmpt, t.Timepoint as tmpt1, CASE WHEN t.Timepoint IS NULL THEN 'Not Collected' WHEN s.timepoint IS NULL THEN 'Not Collected' ELSE 'Collected' END as Timepoint_Collection, case when t.timepoint is null THEN s.timepoint WHEN s.timepoint IS NULL THEN t.Timepoint WHEN s.timepoint = t.TIMEPOINT THEN s.timepoint END as Timepoint  from vw_data s FULL OUTER JOIN lu_pk_Timepoint t on s.PCTPT = t.Timepoint AND s.STUDY=t.Study
    

    【讨论】:

      猜你喜欢
      • 2020-08-28
      • 2016-09-11
      • 1970-01-01
      • 1970-01-01
      • 2019-02-19
      • 1970-01-01
      • 2020-08-04
      • 2021-04-05
      • 2017-10-16
      相关资源
      最近更新 更多