我需要有关查询语句的帮助以添加选定的记录。
表“ tblA”中的记录示例:
Name, Year, Level, Points, Item
John, 2012, 1, 2, bag
John, 2012, 1, 1, book
John, 2013, 1, 1, pen
John, 2013, 1, 1, pencil
John, 2014, 2, 3, hat
John, 2014, 2, 1, ruler
Kent, 2014, 2, 2, bag
Mic, 2014, 2, 2, bag
Dan, 2014, 2, 2, bag
Tim, 2014, 2, 2, bag
是否可以执行1条语句查询来汇总John的得分,但前提是如果Level超过2年相同,则仅考虑最近一年的得分。
例如:在上述情况下,仅以下记录应添加点。(2012年的记录应被忽略,因为有一个新的年份(2013年)的等级为1。因此,约翰应该得到6分。
John, 2013, 1, 1, pen
John, 2013, 1, 1, pencil
John, 2014, 2, 3, hat
John, 2014, 2, 1, ruler
提前致谢。
要获取所有名称及其观点(按照您的逻辑),您可以尝试:
SELECT tblA.Name, SUM(points) AS totalPoints FROM tblA
JOIN (
SELECT MAX(year) year, Name, Level
FROM tblA
GROUP BY Name, Level) tblA2
ON tblA.Name = tblA2.Name
AND tblA.year = tblA2.year
AND tblA.Level = tblA2.Level
GROUP BY Name
如果您只对“约翰”积分感兴趣,那么:
SELECT tblA.Name, SUM(points) AS totalPoints FROM tblA
JOIN (
SELECT MAX(year) year, Name, Level
FROM tblA
WHERE Name = 'John'
GROUP BY Name, Level) tblA2
ON tblA.Name = tblA2.Name
AND tblA.year = tblA2.year
AND tblA.Level = tblA2.Level
GROUP BY Name
SQL Fiddle演示:http ://sqlfiddle.com/#!2/75f478/9
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句