我有生产力浮动值,计算: Sum(Fields!TotalMinutes.Value)/ Sum(Fields!ProductiveHours.Value * 60)
此值有一些零: Productivity with zeroes 在SSDT Visual studio中有没有办法过滤掉它们? 或者我应该使用表达式?
我在表达式框中尝试了以下内容: =开关(萨姆(字段TotalMinutes.Value)/萨姆(字段ProductiveHours.Value * 60)>!0, 领域!GLProgramName.Value)
但程序名称空间仍然存在,空格为...... 我的目标是过滤掉零值的程序..
谢谢!
答案 0 :(得分:0)
您可以在SQL语句中过滤掉CTE(公用表表达式)中的分组零值。
WITH
sample_data
AS
(
SELECT tbl.* FROM (VALUES
( 'Program1', 30, 2)
, ( 'Program1', 45, 1)
, ( 'Program3', 15, 5)
, ( 'Program3', 10, 7)
, ( 'Program5', 0, 8)
) tbl ([GLProgramName], [TotalMinutes], [ProductiveHours])
)
,
group_sample_data
AS
(
SELECT
[GLProgramName]
FROM
sample_data
GROUP BY
[GLProgramName]
HAVING
SUM([TotalMinutes]) / SUM([ProductiveHours]) * 60 != 0
)
SELECT * FROM sample_data WHERE [GLProgramName] IN(SELECT [GLProgramName] FROM group_sample_data)
另外,我建议您在SQL中进行高效分钟计算,或者将其创建为视图,然后在报告中使用。
WITH
sample_data
AS
(
SELECT tbl.* FROM (VALUES
( 'Program1', 30, 2)
, ( 'Program1', 45, 1)
, ( 'Program3', 15, 5)
, ( 'Program3', 10, 7)
, ( 'Program5', 0, 8)
) tbl ([GLProgramName], [TotalMinutes], [ProductiveHours])
)
SELECT
[GLProgramName]
, [TotalMinutes] = ISNULL([TotalMinutes], 0)
, [ProductiveHours] = ISNULL([ProductiveHours], 0)
, [ProductiveMinutes] = ISNULL([ProductiveHours], 0) * 60
FROM
sample_data