您好我们有以下数据集来自SQL。
NAME, TYPE, DATE
ALICE, 1, 1/1/2001
ALICE, 1, 1/1/2002
ALICE, 2, 1/1/2003
ALICE, 2, 1/1/2004
BOB, 1, 1/1/2005
BOB, 1, 1/1/2003
我们需要在SSRS tablix中显示该表,其中每个用户有一行,每个类型有一列显示最近的日期。所以
NAME, MOST RECENT TYPE 1 DATE, MOST RECENT TYPE 2 DATE
ALICE, 1/1/2002, 1/1/2004
BOB , 1/1/2005, NONE
我无法理解如何将MAX日期仅计算在TYPE 1或TYPE 2上,因为类型值在同一列中。
现在我有行grup来聚合所有alice和所有bob,但我不知道如何分离出两种不同类型的日期,所以我可以分别得到每种类型的MAX。
有什么建议吗?
感谢, MC
答案 0 :(得分:2)
假设Sql Answer是可以接受的,您可以执行以下操作:
SELECT
ud.Name,
MAX(CASE ud.Type WHEN 1 THEN ud.SomeDate END) AsMostRecentType1,
MAX(CASE ud.Type WHEN 2 THEN ud.SomeDate END) AsMostRecentType2
FROM
UserDates ud
GROUP BY ud.Name;
我抵制了在SQL中应用ISNULL(x, 'NONE')
的诱惑,因为这会引起类型问题,IMO是表示层关注点,在您决定日期格式的同时应该applied in SSRS ,例如:
=IIf(IsNothing(Fields!AsMostRecentType1.Value), "NONE",
Fields!AsMostRecentType1.Value.ToString("D/M/YYYY"))
答案 1 :(得分:1)
我会在Type列上添加一个Column Group。然后,SSRS Max函数的默认范围(在详细信息单元格中)将是Name的Row Group和Type的Column Group的组合。