日期:2014-05-18  浏览次数:20662 次

用sql语句 统计此编码下 有几个直接下级编码
编码 名称 计算下面有几个直接下级(如下所示)
435 司法的 0
996 死地方 3
99601 沙发斯蒂芬 0
99602 司法所 1
9960201 司法的 0
99603 撒旦法 0
997 萨旦法 0
998 实施的 5
99801 急急急 0
99802 死死地 2
9980201 3lod你 2
998020101 解决的 3
99802010101 及会计 0
99802010102 让人此 0
99802010103 看55 0
998020102 及会计 0
9980203 合计 0
99803 jj看看 0
99806 呵呵 0
99807 和计划 0
999 城乡社 0
 
如上所列 如何用sql语句计算 是0,2,3,5 等等

------解决方案--------------------
这样?

SQL code
--> --> (Roy)生成測試數據
 
if not object_id('Tempdb..#T') is null
    drop table #T
Go
Create table #T([编码] varchar(50),[名称] nvarchar(10))
Insert #T
select 435,N'司法的' union all
select 996,N'死地方' union all
select 99601,N'沙发斯蒂芬' union all
select 99602,N'司法所' union all
select 9960201,N'司法的' union all
select 99603,N'撒旦法' union all
select 997,N'萨旦法' union all
select 998,N'实施的' union all
select 99801,N'急急急' union all
select 99802,N'死死地' union all
select 9980201,N'3lod你' union all
select 998020101,N'解决的' union all
select 99802010101,N'及会计' union all
select 99802010102,N'让人此' union all
select 99802010103,N'看55' union all
select 998020102,N'及会计' union all
select 9980203,N'合计' union all
select 99803,N'jj看看' union all
select 99806,N'呵呵' union all
select 99807,N'和计划' union all
select 999,N'城乡社'
Go
Select a.[编码],a.名称,COUNT(b.编码) as 直属 
from #T as a
left join #T as b on b.[编码] like a.[编码]+'__'  
group by a.[编码],a.名称
order by 1
/*
编码    名称    直属
435    司法的    0
996    死地方    3
99601    沙发斯蒂芬    0
99602    司法所    1
9960201    司法的    0
99603    撒旦法    0
997    萨旦法    0
998    实施的    5
99801    急急急    0
99802    死死地    2
9980201    3lod你    2
998020101    解决的    3
99802010101    及会计    0
99802010102    让人此    0
99802010103    看55    0
998020102    及会计    0
9980203    合计    0
99803    jj看看    0
99806    呵呵    0
99807    和计划    0
999    城乡社    0
*/

------解决方案--------------------
SQL code
select 编码,名称,
       直属数量=(select count(1) from tb where 编码 like a.编码+'__')
from tb a