if object_id('凭证表') is not null drop table 凭证表 go create table 凭证表([年] varchar(10),[月] varchar(10),[科目ID] varchar(10),[借方] int,[贷方] int) insert 凭证表 select '2009','03',510100101,800,0 insert 凭证表 select '2009','03',510100102,600,0 insert 凭证表 select '2009','03',540100101,700,0 insert 凭证表 select '2009','03',540100102,700,0 go if object_id('科目表') is not null drop table 科目表 go create table 科目表([ID] varchar(10),[名称] varchar(20),[级数] int) insert 科目表 select '5101','主营业务收入',1 insert 科目表 select '5101001','主营业务收入-1',2 insert 科目表 select '5101002','主营业务收入-2',2 insert 科目表 select '510100101','主营业务收入-1-1',3 insert 科目表 select '510100201','主营业务收入-2-1',3 insert 科目表 select '510100102','主营业务收入-1-2',3 insert 科目表 select '510100202','主营业务收入-2-2',3 insert 科目表 select '5401','A主营业务收入',1 insert 科目表 select '5401001','A主营业务收入-1',2 insert 科目表 select '5401002','A主营业务收入-2',2 insert 科目表 select '540100101','A主营业务收入-1-1',3 insert 科目表 select '540100201','A主营业务收入-2-1',3 insert 科目表 select '540100102','A主营业务收入-1-2',3 insert 科目表 select '540100202','A主营业务收入-2-2',3 go -->全部显示 SELECT [年],[月],ID,[名称], [借方]=ISNULL(SUM([借方]),0), [贷方]=ISNULL(SUM([贷方]),0) FROM 凭证表 a LEFT JOIN 科目表 b ON [科目ID] LIKE b.ID+'%' GROUP BY [年],[月],ID,[名称] ORDER BY ID /* 年 月 ID 名称 借方 贷方 ---------- ---------- ---------- -------------------- ----------- ----------- 2009 03 5101 主营业务收入 1400 0 2009 03 5101001 主营业务收入-1 1400 0 2009 03 510100101 主营业务收入-1-1 800 0 2009 03 510100102 主营业务收入-1-2 600 0 2009 03 5401 A主营业务收入 1400 0 2009 03 5401001 A主营业务收入-1 1400 0 2009 03 540100101 A主营业务收入-1-1 700 0 2009 03 540100102 A主营业务收入-1-2 700 0 (8 行受影响) */ -->显示一级科目 SELECT [年],[月],ID,[名称], [借方]=ISNULL(SUM([借方]),0), [贷方]=ISNULL(SUM([贷方]),0) FROM 凭证表 a LEFT JOIN 科目表 b ON [科目ID] LIKE b.ID+'%' GROUP BY [年],[月],ID,[名称] having len(id)=4 ORDER BY ID /* 年 月 ID 名称 借方 贷方 ---------- ---------- ---------- -------------------- ----------- ----------- 2009 03 5101 主营业务收入 1400 0 2009 03 5401 A主营业务收入 1400 0 (2 行受影响) */ 抛出异常: raiserror('异常信息',16,1)