sql-server – SQL Server查询LEFT JOIN,SUM和GROUP BY和我被困!

前端之家收集整理的这篇文章主要介绍了sql-server – SQL Server查询LEFT JOIN,SUM和GROUP BY和我被困!前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在殴打我的大脑反对这个

我有3个sql Server 2005表

userawards:

id,awardamount,userid,dateawarded,awardtypeid

用户

id,firstname,lastname

awardtypes:

id,title

所以如果奖项表有行

1,300.00,3,01-01-2011,1
2,125.00,01-05-2011,1
3,50.00,2,2

用户表行

1,john,smith
2,mark,smith
3,bob,smith

奖励类型

1,cash
2,prize

我希望输出看起来像这样

bob smith,425.00,cash
mark smith,50,prize

等等

用户可以获得多个奖项,结果需要显示唯一用户,但总奖金额.另外还需要有2个连接,一个用户可以在用户表中获取用户的名字/最后一个以及授予类型标题.

所以我的查询看起来像这样(我知道它不起作用)

SELECT id,awardtypeid,SUM(awardamount) 
FROM awards a
LEFT JOIN userinfo ui ON ui.userid = a,userid
LEFT JOIN awardtypes ON awardtypesid = a.awardtypeid
GROUP BY userid

这甚至可能吗

解决方法

你可能想要
SELECT userid,SUM(awardamount) 
FROM   awards a 
       LEFT JOIN userinfo ui 
         ON ui.userid = a.userid 
       LEFT JOIN awardtypes 
         ON awardtypesid = a.awardtypeid 
GROUP  BY userid,awardtypeid

要么

SELECT userid,SUM(awardamount) 
FROM   awards a 
       LEFT JOIN userinfo ui 
         ON ui.userid = a.userid 
       LEFT JOIN awardtypes 
         ON awardtypesid = a.awardtypeid 
GROUP  BY userid

这会删除id列(可能不是你想要分组的)

在第一种情况下,我将奖品包含在选择中,但这意味着您还必须将其添加到组中.

猜你在找的MsSQL相关文章