Sql 仅当行组的总和大于0时才显示行

Sql 仅当行组的总和大于0时才显示行,sql,sql-server,sql-server-2008,reporting-services,ssrs-2008,Sql,Sql Server,Sql Server 2008,Reporting Services,Ssrs 2008,我有一张和下面一样的桌子。我希望将这些数据按LineID和Product分组,并将列作为小时显示给SSR,以便仅显示每个LineID和Product的HourCount>0的行 LineID Product Hour HourCount 3 A 0 0 3 A 1 0 3 A 2 0 3 A 3 0 3 A 4 0 3 A 5 0 3 B 0 65 3 B 1 56 3 B 2 4

我有一张和下面一样的桌子。我希望将这些数据按LineID和Product分组,并将列作为小时显示给SSR,以便仅显示每个LineID和Product的HourCount>0的行

LineID  Product Hour    HourCount
3   A   0   0
3   A   1   0
3   A   2   0
3   A   3   0
3   A   4   0
3   A   5   0
3   B   0   65
3   B   1   56
3   B   2   45
3   B   3   34
3   B   4   43
3   B   5   45
4   A   0   54
4   A   1   34
4   A   2   45
4   A   3   44
4   A   4   55
4   A   5   44
4   B   0   0
4   B   1   0
4   B   2   0
4   B   3   0
4   B   4   0
4   B   5   0
5   A   0   45
5   A   1   77
5   A   2   66
5   A   3   55
5   A   4   0
5   A   5   0
5   B   0   0
5   B   1   0
5   B   2   45
5   B   3   0
5   B   4   0
5   B   5   0
基本上,我希望这个表在进入SSRS之前看起来像这样:

LineID  Product Hour    HourCount
3   B   0   65
3   B   1   56
3   B   2   45
3   B   3   34
3   B   4   43
3   B   5   45
4   A   0   54
4   A   1   34
4   A   2   45
4   A   3   44
4   A   4   55
4   A   5   44
5   A   0   45
5   A   1   77
5   A   2   66
5   A   3   55
5   A   4   0
5   A   5   0
5   B   0   0
5   B   1   0
5   B   2   45
5   B   3   0
5   B   4   0
5   B   5   0
因此,仅当任何Hourd的HourCount高于0时,才显示该行的产品


是否有任何查询可以提供这些结果,或者我应该在SSRS中使用显示设置?

类似的内容应该可以:

with NonZero as
(
  select *
    , GroupZeroCount = sum(HourCount) over (partition by LineID, Product)
  from HourTable
)
select LineID
  , Product
  , [Hour]
  , HourCount
from NonZero
where GroupZeroCount > 0


您当然可以在SSR中使用类似的东西,但在T-SQL级别应用它肯定更容易和直观。

我想您正在寻找

SELECT LineID,Product,Hour,Count(Hour) AS   HourCount 
    FROM abc   
    GROUP BY LineID,Productm,Hour   HAVING Count(Hour) > 0