-3

我有这个 T-SQL 语句,它加起来所有,col1col2还需要返回由返回的行数WHERE

我想出如何做到这一点的唯一方法是count(FlightLogLegID - (FlightLogLegID - 1))每行求和 1。我希望有一种更好的方法,不需要不必要的加法和减法。

SELECT 
    coalesce((Select sum(Col1)),0) AS Number1,
    coalesce((Select sum(Col2)),0) AS Number2,
    coalesce((Select count(TableRowID - (TableRowID - 1)), 0) AS Number3
FROM 
    SomeTable 
WHERE ...

示例行

TableRowID   Col1   Col2
1            5      10
2            3      5
3            12     8

期望的结果

Number1   Number2   Number3
20        23        3
4

2 回答 2

1

如果它像您的示例所暗示的那样简单,只返回一行,那么您所需要的就是:

Select SUM(Col1)
     , SUM(Col2)
     , Count(*)
From   SomeTable
Where  <whatever>

Coalesce不会是一个问题: Count(*) 将计算所有记录,即使是具有空值的记录。

于 2013-03-12T01:03:54.467 回答
1

这是你问的吗?

SELECT SUM(Col1) [Number1], SUM(Col2) [Number2], COUNT(*) [Number3] 
FROM SomeTable

你可以使用这个SQL Fiddle来检查它。

于 2013-03-12T01:07:24.357 回答