MSSQL 如何统计单位的子级单位中项的数量

道玄希言 伊爱高新 工程师  2017-03-20 07:00:27
CorpCode表示单位与子级单位的关系
1 00 (单位)
2 0000 (单位00的子级单位)
3 000000 (单位0000的子级单位)

IsOnLine 表示该项是否在线: 1 在线, 0 不在线

--数据
WITH corp(CorpRID, CorpCode, IsOnLine) AS
(
SELECT 1, '00', 0 UNION ALL
SELECT 1, '00', 1 UNION ALL
SELECT 2, '0000', 0 UNION ALL
SELECT 2, '0000', 1 UNION ALL
SELECT 3, '000000', 0 UNION ALL
SELECT 3, '000000', 1
)
--希望结果
单位ID 规则 总数 在线数
CorpRID, CorpCode, countall, contOnLine
1 00 6 3
2 0000 4 2
3 000000 2 1

...全文
188 点赞 收藏 2
写回复
2 条回复
RINK_1 2017年03月20日
SELECT A.CorpCode,A.CorpRID,COUNT(*) AS countall,SUM(IsOnLine) AS contOnLine FROM (SELECT DISTINCT CorpRID,CorpCode FROM corp) AS A LEFT JOIN corp B ON CHARINDEX(A.CORPCODE,B.CorpCode)<>0 GROUP BY A.CorpCode,A.CorpRID
回复 点赞
道玄希言 2017年03月20日
为SQL2008 数据库, 求一个效率高点的查询
回复 点赞
发动态
发帖子
疑难问题
创建于2007-09-28

9307

社区成员

12.1w+

社区内容

MS-SQL Server 疑难问题
社区公告
暂无公告