sql - 选择查询中的列总和

标签 sql sql-server sql-server-2008

我在 sql server 选择查询中遇到问题。我有下表。

ID-----Name----Quantity
1-------a-----------10
2-------b-----------30
3-------c-----------20
4-------d-----------15
5-------e-----------10
6-------f-----------30
7-------g-----------40

我想选择数量总和 < 值的那些记录。例如,如果我说选择那些数量总和 <65 的记录,那么输出将是

ID-----Name----Quantity
1-------a-----------10
2-------b-----------30
3-------c-----------20

因为如果我们包含下一条记录,那么 Quantity 的总和将为 75。

我想创建这个查询。请帮帮我。

最佳答案

您可以简单地使用一个相关的子查询来做到这一点,它对 MySQL 和 SQL Server 都可以很好地工作。但这不是最佳性能明智的解决方案:

SELECT 
  ID, 
  Name,
  Quantity
FROM
(
  SELECT 
    t1.ID, 
    t1.Name,
    t1.Quantity,
    (SELECT SUM(t2.Quantity)
     FROM tablename AS t2
     WHERE t2.ID <= t1.ID) AS Total
  FROM Tablename AS t1
) AS t
WHERE Total < 65;

查看实际效果:

这会给你:

| ID | NAME | QUANTITY |
------------------------
|  1 |    a |       10 |
|  2 |    b |       30 |
|  3 |    c |       20 |

关于sql - 选择查询中的列总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15942296/

相关文章:

php - 如何从数据库中查找今天和其他日期之间的月份差异?

java - 为什么我得到列表中每个值的多次迭代

java - h2 getGenerateKeys 抛出异常

sql - 我可以在 SQL Azure 中编写数据分类脚本吗

SQL 分组依据和交叉应用

javascript - JSP:插入不起作用 (SQLSERVER)

sql-server-2008 - Excel 电子表格中的 VARCHAR 大小限制

php - SQL Server 和 WAMP Server 冲突吗?我需要使用不同的端口吗?

sql - 按列名对统计数据进行分组

mysql - 为什么我得到 "Subquery returns more than 1 row"