首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

[30分]基础有关问题,待;环境创建的代码和测试数据已经给出

2012-02-29 
[30分]求助基础问题,在线等待;环境创建的代码和测试数据已经给出现有2基础数据表,数据如下TBL1数据schoolc

[30分]求助基础问题,在线等待;环境创建的代码和测试数据已经给出
现有2基础数据表,数据如下

TBL1   数据

school           class1             class2             class3            
--------   -----------   -----------   -----------  
  内                   11.00               11.00               11.00  
  内                   12.00               12.00               12.00  
  外                   13.00               13.00               13.00  
  外                   14.00               14.00               14.00  

TBL2   数据

school           hope1               hope2               hope3              
-------   -----------   -----------   -----------  
    内               110.00             110.00             110.00  
    内               120.00             120.00             120.00  
    外               130.00             130.00             130.00  
    外               140.00             140.00             140.00  

期望结果:
school     class1SUM     class2SUM     class3SUM     hope1SUM     hope2SUM2   hope3SUM  
------       --------       --------       ---------     --------     --------   --------  
内                 23.00             23.00             23.00           230.00           230.00         230.00      
外                 27.00             27.00             27.00           270.00           270.00         270.00  
 
请问:
SELECT   tbl1.school   ,sum(class1)   as   class1   ,sum(class2)   as   class2   ,sum(class3)   as   class3   ,
              sum(hope1)   as   hope1   ,sum(hope2)   as   hope2   ,sum(hope3)   as   hope3  
              from   tbl1   left   join     tbl2   on   tbl1.school   =   tbl2.school  
              group   by     tbl1.school  



school     class1SUM     class2SUM     class3SUM     hope1SUM     hope2SUM2   hope3SUM  
------       --------       --------       ---------     --------     --------   --------  
内               46.00               46.00             46.00           460.00           460.00         460.00  
外               54.00               54.00             54.00           540.00           540.00         540.00  

为什么达不到期望结果,且和期望数据有出入?请给出原理解释和实现方法;谢谢



[解决办法]
SELECT tbl1.school ,sum(class1) as class1 ,sum(class2) as class2 ,sum(class3) as class3 ,
sum(hope1) as hope1 ,sum(hope2) as hope2 ,sum(hope3) as hope3
from tbl1 inner join tbl2 on tbl1.school = tbl2.school
group by tbl1.school
[解决办法]
关注!
[解决办法]
去掉group by

SELECT tbl1.school ,sum(class1) as class1 ,sum(class2) as class2 ,sum(class3) as class3 ,
sum(hope1) as hope1 ,sum(hope2) as hope2 ,sum(hope3) as hope3
from tbl1 left join tbl2 on tbl1.school = tbl2.school

看一下结果就会明白了。

[解决办法]
create table tbl1
(school varchar(10),class1 int,class2 int,class3 int)
insert into tbl1 select '内 ',11,11,11
union all select '内 ',12,12,12
union all select '外 ',13,13,13
union all select '外 ',14,14,14


create table tbl2
(school varchar(10),hope1 int,hope2 int,hope3 int)
insert into tbl2 select '内 ',110,110,110
union all select '内 ',120,120,120
union all select '外 ',130,130,130
union all select '外 ',140,140,140

go

select ta.school,[class1SUM],[class2SUM],[class3SUM],[hope1SUM],[hope2SUM],[hope3SUM]
from
(select school,[class1SUM]=sum(class1),[class2SUM]=sum(class2),[class3SUM]=sum(class3) from tbl1 group by school)ta
left join
(select school,[hope1SUM]=sum(hope1),[hope2SUM]=sum(hope2),[hope3SUM]=sum(hope3)from tbl2 group by school)tb
on ta.school=tb.school

school class1SUM class2SUM class3SUM hope1SUM hope2SUM hope3SUM
---------- ----------- ----------- ----------- ----------- ----------- -----------
内 23 23 23 230 230 230
外 27 27 27 270 270 270

(所影响的行数为 2 行)

热点排行