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列(可能不是你想要分组的)

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

相关文章

SELECT a.*,b.dp_name,c.pa_name,fm_name=(CASE WHEN a.fm_n...
if not exists(select name from syscolumns where name=&am...
select a.*,pano=a.pa_no,b.pa_name,f.dp_name,e.fw_state_n...
要在 SQL Server 2019 中设置定时自动重启,可以使用 Window...
您收到的错误消息表明数据库 'EastRiver' 的...
首先我需要查询出需要使用SQL Server Profiler跟踪的数据库标...