【发布时间】:2011-08-17 21:49:13
【问题描述】:
我正在用我的大脑来对抗这个
我有 3 个 SQL Server 2005 表
用户奖励:
id, awardamount, userid, dateawarded, awardtypeid
用户:
id, firstname, lastname
奖励类型:
id, title
所以如果awards 表有行
1, 300.00, 3, 01-01-2011, 1
2, 125.00, 3, 01-05-2011, 1
3, 50.00, 2, 01-05-2011, 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, userid, 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
这可能吗?
【问题讨论】:
-
如果一个用户有多个不同类型的奖励,预期的输出应该是什么?
-
这将有助于向我们展示一些示例输入和预期输出。另外,什么版本的 SQL Server?
-
你有一个 , 而不是 .在一个,userid
-
修改问题以回答您的问题;)
-
您在描述中说您想要唯一的用户(或每个用户一行)。但是,您已经包含了奖励类型,后来又说您还想要“该”奖励类型标题。这意味着每个用户、每个奖励类型(他们获得的奖励)只有一行。
标签: sql-server join group-by sum