加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

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

发布时间:2020-12-12 08:54:27 所属栏目:MsSql教程 来源:网络整理
导读:我正在殴打我的大脑反对这个 我有3个SQL Server 2005表 userawards: id,awardamount,userid,dateawarded,awardtypeid 用户: id,firstname,lastname awardtypes: id,title 所以如果奖项表有行 1,300.00,3,01-01-2011,12,125.00,01-05-2011,13,50.00,2,2 用
我正在殴打我的大脑反对这个

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读