select  CONVERT(varchar(30),dtime, 23) as dtime,positions.RID, [flightnumber], [airline], [departureairport], [arrivedairport], [departuretime], [arrivaltime],CONVERT(varchar(30),endle, 23) as endle, [weekly], routes.manag,routes.updatetime,[M_Taxes],routes.positions ,sum(Surplus) as surplus,sum(sold)/sum(amount) as mzl from positions,Routes where positions.RID in (SELECT Routes.RID FROM [Routes] WHERE ([flightnumber] = 'a123')) and flightnumber='a123' GROUP BY dtime,positions.RID, [flightnumber], [airline], [departureairport], [arrivedairport], [departuretime], [arrivaltime],endle, [weekly], routes.manag,routes.updatetime,[M_Taxes],routes.positions,surplus
这是一条数据库查询语句  这个看这复杂 其实也就是查询两张表  一张表比如是放着学生姓名班级什么的,第二张表放着各科的成绩等  比如相关联的是学生的姓名(假如是主键)  怎么写一条语句查询出 某个班的学生的成绩?
查询结果是这样格式的
1班  张三  300分
1班  李四  299分
1班  王五  301分
表1
张三  1班
李四  1班
马六  2班
表2
张三  语文 70
张三  数学 80
李四  语文 90
。。

解决方案 »

  1.   

    select t1.*,sum(t2.cj) as s_cj
    from table1 t1 ,table2 t2
    where t1.id = t2.id
    group by ....
      

  2.   

    select 班级,A.姓名,总分=sum(分数)
    from 表1 A join 表2 B on A.姓名=B.姓名 
    group by 班级,A.姓名
      

  3.   

    sum结果当然不对。你的语句期望对positions,Routes执行inner join联接,实际缺少联接条件,变成交叉联接。where positions.RID in (SELECT Routes.RID FROM [Routes] WHERE ([flightnumber] = 'a123')) and flightnumber='a123'应该写成:where positions.RID=Routes.RID and Routes.flightnumber='a123'