34,587
社区成员
发帖
与我相关
我的任务
分享
WITH t1 AS (
SELECT jobno,
COUNT(*) c -- 全体id数量
FROM b
GROUP BY jobno
)
,t2 AS (
SELECT b.jobno,
COUNT(*) c -- 匹配id数量
FROM b
JOIN a
ON CHARINDEX(b.id,a.id)<>0
GROUP BY b.jobno
)
SELECT t1.jobno
FROM t1
JOIN t2
ON t1.jobno = t2.jobno
WHERE t1.c = t2.c
WITH t1 AS (
SELECT jobno,
COUNT(*) c -- 全体id数量
FROM b
GROUP BY jobno
)
,t2 AS (
SELECT b.jobno,
COUNT(*) c -- 匹配id数量
FROM b
JOIN a
ON CHARINDEX(b.id,a.id)<>0
)
SELECT t1.jobno
FROM t1
JOIN t2
ON t1.jobno = t2.jobno
WHERE t1.c = t2.c
select Jobno from B where Id in (select Id from A)
供参考,不知道是不是LZ想要的结果!with a(id,name) as
(select '00000004,00000005,00000008','单杠,双杠,EE'
union all
select '00000006,00000007','CC,DD')
,b(jobno,id,name) as
(select 'OU2015012800001','00000008','AA' union all
select 'OU2015012800001','00000009','BB' union all
select 'OU2015012800002','00000004','单杠' union all
select 'OU2015012800002','00000005','双杠' union all
select 'OU2015012800002','00000008','EE' union all
select 'OU2015012800003','00000007','DD')
select jobno from
(select aid,jobno,COUNT(*) as 个数 from
(select a.id as aid,b.jobno,b.id as bid from a,b
where CHARINDEX(','+b.id+',',','+a.id+',')<>0
group by a.id,b.jobno,b.id) as c group by
c.aid,c.jobno) as d inner join
(select *,LEN(id)-LEN(replace(id,',',''))+1 as 个数
from a) as e on d.aid=e.id and d.个数=e.个数
/*
jobno
---------------
OU2015012800002
----------------
*/
再试试with a(id,name) as
(select '00000004,00000005,00000008','单杠,双杠,EE'
union all
select '00000006,00000007','CC,DD')
,b(jobno,id,name) as
(select 'OU2015012800001','00000008','AA' union all
select 'OU2015012800001','00000009','BB' union all
select 'OU2015012800002','00000004','单杠' union all
select 'OU2015012800002','00000005','双杠' union all
select 'OU2015012800002','00000008','EE' union all
select 'OU2015012800003','00000007','DD')
select d.jobno from
(select jobno,COUNT(bid) as 个数 from
(select a.id as aid,b.jobno,b.id as bid
from a,b where charindex(','+b.id+',',','+a.id+',')<>0
group by a.id,b.jobno,b.id) as c group by c.jobno) as d
inner join (select *,LEN(id)-LEN(replace(ID,',',''))+1 as 个数 from a)
as e on d.个数=e.个数
/*
jobno
---------------
OU2015012800002
----------------
*/