获取另一个表中不存在的值,反之亦然

时间:2015-07-14 07:35:16

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

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

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

我尝试使用Left Join但是由于不正确的join语句,我得到的行数更多。 下面是我用来获取其时间点不等于另一个表

的所有候选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

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

我找到了解决方法。我使用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