关闭

解决了类似树型结构的查询语句

标签: inserttable测试
944人阅读 评论(1) 收藏 举报

     晚上被一个类似树型结构的查询语句困扰  终于解决了。不过好象查询的效率不是很高

问题可以被抽象为求每个 hetongid 中的B的和   、D的和

 /*************************设计的测试表*****************************/

create table t( hetongid char(20),  A int, B int ,D int )

insert into t values ( '公司1',1 ,100 ,1 )
insert into t values ( '公司1',1 ,100 ,2 )
insert into t values ( '公司1',1 ,100 ,22 )
insert into t values ( '公司1',1 ,100 ,23 )

insert into t values ( '公司1',2 ,100 ,5 )
insert into t values ( '公司1',2 ,100 ,6 )

insert into t values ( '公司1',3 ,200 ,3 )
insert into t values ( '公司1',3 ,200 ,4 )

insert into t values ( '公司2',4 ,300 ,1 )
insert into t values ( '公司2',4 ,300 ,2 )
insert into t values ( '公司2',4 ,300 ,22 )
insert into t values ( '公司2',4 ,300 ,23 )


insert into t values ( '公司2',5 ,200 ,3 )
insert into t values ( '公司2',5 ,200 ,4 )

insert into t values ( '公司2',6 ,100 ,5 )
insert into t values ( '公司2',6 ,100 ,6 )


select * from t

/************************表的格式***********************/

hetongid            A         B    D

公司1                1       100    1
公司1                1       100    2
公司1                1      100      22
公司1                1      100     23
公司1                2       100    5
公司1                2      100     6
公司1                3      200     3
公司1                3      200     4
公司2                4      300     1
公司2                4      300    2
公司2                4      300    22
公司2                4      300    23
公司2                5      200    3
公司2                5     200     4
公司2                6     100     5
公司2                6      100    6

 

/********************错误的语句*********************************/
select * from t
select   hetongid,  sum( distinct (B)),SUM(D)
from  t
GROUP BY hetongid,A


/***************正确的语句*************/

select * from t

select   a.hetongid,  sum(a.b),SUM(a.d)
from  ( select hetongid,  sum( distinct (B)) as b,SUM(D) as d 
        from t
        group by hetongid,  A
      ) a                                  
GROUP BY hetongid

 

/*****************结果*********************/

公司1                400        66 

公司2               600           66 

 

                如果有更好的办法  请指点指点。

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:96871次
    • 积分:1447
    • 等级:
    • 排名:千里之外
    • 原创:43篇
    • 转载:45篇
    • 译文:0篇
    • 评论:7条
    最新评论
    sql server