Report Month Booked Month Hours Available Hours Reported Hours
2015-12-01 00:00:00 2015-10-01 00:00:00 3.5 97 172
2015-12-01 00:00:00 2015-10-01 00:00:00 0.75 97 172
2015-12-01 00:00:00 2015-10-01 00:00:00 6.85 97 172
2015-12-01 00:00:00 2015-10-01 00:00:00 3 97 172
2015-11-01 00:00:00 2015-10-01 00:00:00 3.5 97 185
2015-11-01 00:00:00 2015-10-01 00:00:00 0.75 97 185
2015-11-01 00:00:00 2015-10-01 00:00:00 6.85 97 185
2015-11-01 00:00:00 2015-10-01 00:00:00 3 97 185
在我的SSRS报告中,我想要总计报告时间列。这个人在12月份预订了172个小时,在11月份预定了185个小时,因此他今年的总数应该是185 + 172 = 357.
在我当前的报告中,它将所有行加在一起。我怎样才能每月选择一行报告的小时数?
由于
答案 0 :(得分:0)
在SSRS中没有固定的方法。
通常,您会将查询包装在另一个使用 ROW_NUMBER 的查询中,并按月分组。然后,如果row_numnber = 1,则仅添加小时数。
不幸的是,这并不总是可行的。我写了一些代码来添加基于另一个字段的唯一记录。我这样做是为了获得各个供应商的支票金额。
对于表达式,您将使用:
=Code.SUMVendors(Report_Month & "|" & Fields!Reported_Hours.Value)
将Visual BASIC添加到报告的 CODE :
FUNCTION SUMVendors(BYVAL ITEMS AS OBJECT()) AS DECIMAL
'Returns Sum of unique vendors. Use as Code.SUMVendors(Vendor & "|" & Amount)
IF ITEMS IS NOTHING THEN
RETURN NOTHING
GOTO EXITSUB
END IF
DIM TEMP AS STRING
DIM VENDORS AS STRING = ""
DIM VENDOR AS STRING = ""
DIM VALUE AS DECIMAL
FOR EACH ITEM AS OBJECT IN ITEMS
TEMP = CONVERT.TOSTRING(ITEM)
VENDOR = "|" & LEFT(TEMP, InStr(TEMP, "|"))
VALUE = CDEC(MID(TEMP, InStr(TEMP, "|") + 1, LEN(TEMP)))
IF InStr(VENDORS, VENDOR) = 0 Then
VENDORS = VENDORS + VENDOR
SUMVendors = SUMVendors + VALUE
End If
NEXT
EXITSUB:
END FUNCTION