Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 仅当值等于或大于3500时求和?_Sql_Sql Server - Fatal编程技术网

Sql 仅当值等于或大于3500时求和?

Sql 仅当值等于或大于3500时求和?,sql,sql-server,Sql,Sql Server,下面有3个事务,我只想对值等于或大于3500的事务编号求和: transaction no. total 0001 1,000 0001 2,000 0001 3,000 0001 4,000 0002 2,000 0002 3,000 0003 1,000 0003

下面有3个事务,我只想对值等于或大于3500的事务编号求和:

transaction no.   total
0001              1,000 
0001              2,000 
0001              3,000 
0001              4,000 

0002              2,000 
0002              3,000 

0003              1,000 
0003              1,000 
0003              1,000 

这是我预期的结果:

transaction no.   total
0001              10,000 
0002              5,000 

当然,交易编号0003不会显示,因为它低于3500。

使用
group by
Having子句

select transactionNo,sum(total) as totalval
from tablename
group by transactionNo
having sum(total)>3500

分组依据
Having子句一起使用

select transactionNo,sum(total) as totalval
from tablename
group by transactionNo
having sum(total)>3500

您只需使用having子句,如下所示:

SELECT transactionNo, SUM(total) AS total
FROM myTable
GROUP BY transactionNo
HAVING SUM(total) > 3500

您只需使用having子句,如下所示:

SELECT transactionNo, SUM(total) AS total
FROM myTable
GROUP BY transactionNo
HAVING SUM(total) > 3500
HAVING子句已添加到SQL,因为WHERE关键字无法 可以与聚合函数一起使用

HAVING子句已添加到SQL,因为WHERE关键字无法 可以与聚合函数一起使用


您可以使用以下代码:

SELECT DISTINCT     transactionNo,
   runningtotal
FROM   (
       SELECT myTable1.transactionNo,
              myTable1.total,
              SUM(myTable2.total) AS runningtotal
       FROM   myTable myTable1
              INNER JOIN myTable myTable2
                   ON  myTable1.transactionNo = myTable2.transactionNo
       GROUP BY
              myTable1.transactionNo,
              myTable1.total
   )            result
WHERE  runningtotal > 3500
或者您可以使用窗口功能CTE

;WITH ResultTable AS (
      SELECT DISTINCT transactionNo,
             SUM(total) OVER(PARTITION BY transactionNo) AS total
      FROM   myTable
  )

SELECT *
FROM   ResultTable
WHERE  ResultTable.total > 3500

您可以使用以下代码:

SELECT DISTINCT     transactionNo,
   runningtotal
FROM   (
       SELECT myTable1.transactionNo,
              myTable1.total,
              SUM(myTable2.total) AS runningtotal
       FROM   myTable myTable1
              INNER JOIN myTable myTable2
                   ON  myTable1.transactionNo = myTable2.transactionNo
       GROUP BY
              myTable1.transactionNo,
              myTable1.total
   )            result
WHERE  runningtotal > 3500
或者您可以使用窗口功能CTE

;WITH ResultTable AS (
      SELECT DISTINCT transactionNo,
             SUM(total) OVER(PARTITION BY transactionNo) AS total
      FROM   myTable
  )

SELECT *
FROM   ResultTable
WHERE  ResultTable.total > 3500

使用“在您的分组之后拥有”
group by[transaction no.]having sum(total)>=3500
使用“在您的分组之后拥有”
group by[transaction no.]having sum(total)>=3500