有两个表
第一个表里有id 日期 第二个表里也有id 日期 但第二个表里的日期是大量重复的我想把第一个表里的日期全都列出来,然后看看每条记录在第二个表里是否有这个日期,如果有就列出1,如果没有就列出0例如表1
1 200909
2 200908
3 200907表2
1 200909
2 200909
3 200907
4 200907
搜索出的结果是
1 200909 1
2 200908 0
3 200907 1
这用一条sql语句能列出来吗
第一个表里有id 日期 第二个表里也有id 日期 但第二个表里的日期是大量重复的我想把第一个表里的日期全都列出来,然后看看每条记录在第二个表里是否有这个日期,如果有就列出1,如果没有就列出0例如表1
1 200909
2 200908
3 200907表2
1 200909
2 200909
3 200907
4 200907
搜索出的结果是
1 200909 1
2 200908 0
3 200907 1
这用一条sql语句能列出来吗
from [t1] a left join [t1] b
on a.id=b.id and a.日期=b.日期
from tb1 a
from tb1 a
select *,case when b.日期 is null then 0 else 1 end from
表1 a left join
( select distinct 日期 from 表2 ) b on a.日期 = b.日期或select
*,
case when exists ( select * from 表2 where 日期 = a.日期 ) then 1 else 0 end
from
表1 a
DECLARE @b TABLE (id INT,dt VARCHAR(20))INSERT @a (id,dt)
SELECT 1,'200909'
UNION ALL
SELECT 2,'200908'
UNION ALL
SELECT 3,'200907'INSERT @b (id,dt)
SELECT 1,'200909'
UNION ALL
SELECT 2,'200909'
UNION ALL
SELECT 3,'200907'
UNION ALL
SELECT 4,'200907'SELECT a.*,CASE WHEN bb.dt IS NULL THEN 0 ELSE 1 END
FROM @a AS a LEFT JOIN (SELECT DISTINCT b.dt FROM @b AS b) AS bb ON a.dt = bb.dt
/*
id dt
----------- -------------------- -----------
1 200909 1
2 200908 0
3 200907 1
*/