帮助透视查询

时间:2011-08-16 10:37:35

标签: sql sql-server pivot

我在SQL Server上有一个视图设置,它以这种方式输出记录

id   time       winnerId
-------------------------------
35  1313114959  1
36  1313116182  1
37  1313116397  1
38  1313116596  2
39  1313116807  1
40  1313116858  1
41  1313116908  1
42  1313117708  2
46  1313118441  1
47  1313118719  1
48  1313120938  1
49  1313123767  1
50  1313159321  3

现在,当我在寻找另一张桌子tbl_players时,我想拿出他的身份并计算他赢了多少场比赛并在右边显示。 tbl_player

id    name
-----------
1    jack
2    hugh
3    man    

我想以这样的方式结果

id    name    win
-----------------
1    jack    9
2    hugh    2
3    man     1   

必须计算总胜利,通过对视图的引用,我们称之为view_winner

如何编写这样的查询?

3 个答案:

答案 0 :(得分:0)

您将两个表连接在一起,并计算每个玩家的赢家ID存在的次数

select p.id, p.name, count(w.winnerid)
from tbl_player p inner join someview w on w.winnerid = p.id
group by p.id, p.name, w.winnerid

答案 1 :(得分:0)

您可以将这些表连接在一起,并group by计算获胜次数:

select  p.id
,       p.name
,       count(w.winnerId)
from    tbl_players p
left join
        view_winner w
on      p.id = w.winnerId
group by
        p.id
,       p.name

答案 2 :(得分:0)

您不需要该输出的支点;

select 
    p.id as id,
    p.name as name,
    count(*) as win
from view_winner
    inner join tbl_player p on (p.id = winnerId)
group by p.id, name
order by p.id