我有一个问题,我试图通过获取NextRow值来解决,但只在特定的RowGroup中。
这是我正在尝试做的事情:
if Fields!Interventions.Value is not blank and nextrow(Fields!DateOccurred.Value) within the group is within 4 hours then Y else N
和另一栏:
if Fields!Interventions.Value is not blank compare currentrow(Fields!DateOccurred.Value) to nextrow(Fields!DateOccurred.Value) and display the differences in hours
但是我对如何在SSRS中表达这种表达方式感到困惑。
我看到了以下问题: Get previous,current and Next Record in ssrs report in a page 但是这个问题是它不适用于SSRS中的行组。
根据进一步的建议,似乎在SSRS中无法做到这一点,但在查询本身中是可能的。
这是我正在使用的查询:
SELECT
ROW_NUMBER() OVER(PARTITION BY R.PatientID, PL.ChartLocationID ORDER BY P.DateOccurred ASC) As Row#,
R.NameFirst,
R.NameLast,
P.DateOccurred,
CASE P.Interventions
WHEN 1 Then 'Regular Analgesia'
When 2 Then 'Heat Pack'
When 4 Then 'Cold Pack'
When 8 Then 'Massage'
When 16 Then 'Exercise'
When 32 Then 'Other'
END as Interventions
FROM
ChartEntry P
LEFT JOIN ChartLocation PL on
P.ChartLocationId = PL.ChartLocationId
Inner Join Resident R on
PL.ResidentID = R.PatientID
where
P.DateDeleted is null and
P.DateOccurred >= '01 Jul 2017' and
P.DateOccurred < '01 Aug 2017'
有可能实现吗?
答案 0 :(得分:0)
最简单,更好的方法是在LAG/LEAD
中使用SQL
来解决这个问题。
答案 1 :(得分:0)
您可以在SSRS中执行此操作:
将您的详细信息值设置为Previous(Fields!DateOccurred.Value)
,将详细信息行可见性设置为= RowNumber("yourgroup") = 1
,这将隐藏第一行。
在组总计上使用一行,以便通过将其值设置为=Last(Fields!DateOccurred.Value)
来显示最后一个值
详细信息的日期差异表达式检查将是
=Iif(
NOT(Fields!Interventions.Value Is Nothing) AND
DateDiff("h", Previous(Fields!DateOccurred.Value),Fields!DateOccurred.Value)>=4,
"Y",
"N"
)
和最后一行
=Iif(
NOT(Fields!Interventions.Value Is Nothing) AND
DateDiff("h", Last(Fields!DateOccurred.Value),Now())>=4,
"Y",
"N"
)
在下图中,红线将隐藏在可见性条件下。 您的报告将仅包含预期日期列,我包括演示的当前行日期。