2011-04-11 70 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