Sql 仅当行组的总和大于0时才显示行
我有一张和下面一样的桌子。我希望将这些数据按LineID和Product分组,并将列作为小时显示给SSR,以便仅显示每个LineID和Product的HourCount>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 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