2011-04-11 69 views
0

我有一个MS-SQL游戏结果表,其中包含主队,主队得分,客场球队和客队比分。我试图查询按第一,总胜数(降序)和总损失(升序)排序的球队,胜利和损失。表不包含包含一个胜利或亏损列。胜利和损失必须根据得分计算。如果我需要创建一个视图或临时表,那么如何通过团队,胜利和损失来创建该视图?基于各列总和的SQL排序

+0

澄清,输赢是不是在表中的列。他们必须根据主场比分与客场比分 – mp42871 2011-04-11 18:58:39

+0

进行计算,然后您需要发布您的表格结构和一些样品数据! – JNK 2011-04-11 19:05:43

+0

我个人的偏好很可能会让你看到一个总结当前季节的胜/败的情况,并运行你对这个观点的查询。 – JNK 2011-04-11 19:06:29

回答

0
select 
    teamName, 
    'wins' = 
     case 
      when wins is null then 0 
      else wins 
     end, 
    'losses' = 
     case 
      when losses is null then 0 
      else losses 
     end 
from 
    teams 
left join 
( 
    select 
     a.wins as wins, 
     b.losses as losses, 
     'team' = 
      case 
       when a.team is null then b.team 
       else a.team 
      end 
    from 
    ( 
     select 
      homeTeam as team, 
      sum(wins) as wins 
     from 
     ( 
      select 
       homeTeam, 
       count(*) as wins 
      from 
       results 
      where 
       homeScore > awayScore 
      group by 
       homeTeam 
      union all 
      select 
       awayTeam, 
       count(*) as wins 
      from 
       results 
      where 
       homeScore < awayScore 
      group by 
       awayTeam   
     ) a 
     group by homeTeam 
    ) a 
    full outer join 
    ( 
     select 
      homeTeam as team, 
      sum(losses) as losses 
     from 
     ( 
      select 
       homeTeam, 
       count(*) as losses 
      from 
       results 
      where 
       homeScore < awayScore 
      group by 
       homeTeam 
      union all 
      select 
       awayTeam, 
       count(*) as losses 
      from 
       results 
      where 
       homeScore > awayScore 
      group by 
       awayTeam 
     ) a 
     group by 
      homeTeam 
    ) b 
    on a.team = b.team 
) c 
on teams.id = c.team 
1

假设你可以拉回来,在你的查询信息,您可以在ORDER BY条款使用集合体:

ORDER BY 
    SUM(win) DESC 
    ,SUM(loss) ASC 

编辑:更新评论

由于只有分数被存储,你”我想要使​​用临时表或CTE(取决于您使用的DBMS,如果支持它们)首先创建一个包含团队并赢得和损失的表,然后您可以从SELECTORDER相应地。

+0

胜利和损失不是我列表中的列,而是表中包含游戏的最终分数 – mp42871 2011-04-11 18:54:52

+0

创建包含团队,胜利和损失的表格的语法是什么? – mp42871 2011-04-11 19:04:20

+0

@ mp42871它取决于你正在使用的数据库 - 如果你编辑更详细的问题,人们可以更新他们的答案 – 2011-04-11 19:05:25

1
SELECT * 
FROM MyTable 
WHERE ... 
ORDER BY SUM(win) DESC, SUM(loss) ASC 

有关更详细的答案,请提供您的架构和示例数据。

0

家庭作业?

无论如何,您可以通过在订单中跟踪列来指定SQL语句中的排序顺序。例如,

select x, y, z from table order by x asc, y desc, z asc