SSDT SSRS Как показать значения отчета больше нуля
У меня есть значение с плавающей запятой производительности, которое вычисление: Sum (Fields! TotalMinutes.Value) / Sum (Fields! ProductiveHours.Value * 60)
У этого значения есть несколько нулей: Производительность с нулями Есть ли способ в SSDT Visual Studio отфильтровать их? Или я должен использовать выражение?
Я попробовал следующее в поле выражения: =switch(Sum(Fields!TotalMinutes.Value)/Sum(Fields!ProductiveHours.Value*60)>0, Fields!GLProgramName.Value)
Но пространство имен программ все еще там, с пустыми пробелами... Моя цель - отфильтровать программы с нулевыми значениями.
Спасибо!
1 ответ
Вы можете отфильтровать сгруппированные нулевые значения в CTE (обычное табличное выражение) в своем выражении 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])
)
,
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