sql - SUM()、GROUP BY 和 WHERE

标签 sql sql-server t-sql

我有一个这样的表:

Title   | Version   | Condition | Count
-----------------------------------------------
Title1  | 1.0       | 1         | 10
Title1  | 1.1       | 2         | 5
Title1  | 1.1       | 2         | 10
Title1  | 1.1       | 1         | 10
Title2  | 1.0       | 2         | 10
Title2  | 1.5       | 1         | 5
Title2  | 1.5       | 2         | 5
Title3  | 1.5       | 2         | 10
Title3  | 1.5       | 1         | 10

我想对具有 MAX()“版本”和“条件”= 2 的每一行的“计数”值求和。我希望这是结果数据集:

Title   | Version   | Condition | Count
-----------------------------------------------
Title1  | 1.1       | 2         | 15
Title2  | 1.5       | 2         | 5
Title3  | 1.5       | 2         | 10

我可以通过以下方式获取“标题”和 MAX(“版本”) 的列表,其中“条件”= 2:

SELECT DISTINCT Title, MAX(Version) AS MaxVer FROM TABLE
WHERE Condition = 2
GROUP BY Title

我不确定如何添加所有“计数”。

最佳答案

试试这个:

SELECT t1.Title, t1.Version, t1.Condition, SUM([Count]) AS Count
FROM mytable AS t1
JOIN (
  SELECT Title, MAX(Version) AS max_version
  FROM mytable
  WHERE Condition = 2
  GROUP BY Title
) AS t2 ON t1.Title = t2.Title AND t1.Version = t2.max_version
WHERE t1.Condition = 2
GROUP BY t1.Title, t1.Version, t1.Condition

Demo here

关于sql - SUM()、GROUP BY 和 WHERE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37124473/

相关文章:

mysql - 如何获取具有多个值的所有行

php - MySQL 查询不工作 PHP

sql - 将表达式传递给存储过程时, 'minute' 附近的语法不正确

sql-server - 捕获SQL Server扩展 session 中传递的参数值?

c# - LINQ to SQL 表达式 "Orderby"帮助

mysql - 对 mysql 中的字段进行计数或求和

sql-server - 在 where 子句中比较值时,在 sql 中将数据类型 varchar 转换为数字时出错

t-sql - 或者在 Case 语句中

sql-server - 相当于 MySQL SOURCE 命令来加载 SQL 脚本吗?

sql - 获取动态列的行数