当前位置: 代码迷 >> Sql Server >> 求组,包含统计解决办法
  详细解决方案

求组,包含统计解决办法

热度:30   发布时间:2016-04-24 09:32:08.0
求组,包含统计
两个表 
表 Identitys
ID          IName
----------- ---------------
1           歌星
2           影星
3           体育明星
4           模特
5           赛车手
6           画家

表 Star,字段IDS对应表Identitys的ID
SID         SName               IDS
--------   ----------------          ----------
1           刘德华                    1,2
2           林志颖                    1,2,5
3           柳岩                        4
4           潘晓婷                    3,5
5           张亮                         4

怎么对Identitys做查询统计,以下是错误的
select i.*,count(s.SID) ICount from Identitys i
left join Star s on 1=1
where charindex(','+convert(nvarchar(20),i.ID)+',', ','+IDS+',')>0
group by i.ID,i.IName
order by i.ID

执行结果,少了一条记录(画家)
ID          IName                        ICount
----------- -----------------------    -----------
1           歌星                              2
2           影星                              2
3           体育明星                      1
4           模特                               2
5           赛车手                           2
------解决思路----------------------
SELECT T1.ID,T1.IName,COUNT(T2.SID)ICount
FROM Identitys T1
LEFT JOIN Star T2 ON ','+T2.IDS+','LIKE '%,'+CAST(T1.ID AS VARCHAR(10))+',%'
GROUP BY T1.ID,T1.IName

------解决思路----------------------
select ID,iname,COUNT(Star.SID) from Identitys 
left join Star on  charindex (','+CAST(id as varchar)+',',','+ids+',')>0
group by ID,iname
  相关解决方案