【问题标题】:I want to be able to to pull through the previous school in which a pupil left to start a new school? (Lookup function)我希望能够通过学生离开的上一所学校开始新的学校吗? (查找功能)
【发布时间】:2022-01-14 07:25:21
【问题描述】:

在我们的数据库中,有一份学生在其一生中就读的学校列表。我在下面附上了一张照片,以展示它在裁剪机密位时的结构。

我已经有了一个主数据集,需要将特定信息放入其中,并且“历史学校名称”需要在另一个数据集中。

因此,我需要执行查找功能,将历史学校名称带入报告中,如下所示: "=lookup(Fields!Child_ID__System_Ref_.Value, Fields!Child_ID__System_Ref_.Value, Fields!School_Details_Name.Value, "Attendance_Data")"

问题在于它会以不合逻辑的顺序将任何随机学校带入。我需要他们在现在就读的学校之前上过的最新学校。我不知道该怎么做,因为没有身份证号或任何东西。

我能想到的唯一方法是使用他们上学的日期,并在他们开始新学校之前做一个表达。他们目前就读的学校没有“结束日期”。

【问题讨论】:

  • 您为什么要标记 SSRS 2005、2008 和 2012?你真的在使用这三个版本吗?您为什么使用完全不受支持或接近支持的版本?
  • 您好 Larnu,我希望尽可能多地了解我的问题,因为我需要一些帮助。如果您来帮忙,我将使用最新版本的 SRSS?
  • “我正在尝试尽可能多地曝光我的问题” 标记错误版本/产品并不能帮助您获得曝光,您的问题更有可能被忽略。尤其是当您标记一个 5 年多以来没有支持的 SSRS 版本时;即使是我们当中最优秀的人也不记得那个版本中有什么功能,什么没有,因为我们大多数人可能在十年的最好的时候没有使用过它。
  • 感谢您的帮助拉努!充分利用时间:-)
  • 如果您在 SSRS 查找中寻找最大值,我建议您使用报告中的代码来汇总结果,Here's 包含有关如何执行此操作的示例的链接。

标签: sql-server reporting-services ssrs-2019


【解决方案1】:

如果可能,我会直接在您的数据集查询中执行此操作。

我已经根据您的样本模拟了一些样本数据(并添加了另一个孩子)

DECLARE @t TABLE (ChildID int, SchoolID int, StartDate date, EndDate Date)

INSERT INTO @t VALUES 
(1, 10, '2011-07-18', '2011-09-07'),
(1, 20, '2011-09-08', '2019-07-19'),
(1, 30, '2019-09-02', '2021-11-30'),
(1, 40, '2021-12-01', NULL),
(2, 20, '2012-07-18', '2012-09-07'),
(2, 40, '2012-09-08', '2018-07-19'),
(2, 60, '2018-09-02', '2020-11-30'),
(2, 80, '2020-12-01', NULL)

    SELECT 
        *
        , LAG(SchoolID, 1, NULL) OVER(PARTITION BY ChildID ORDER BY StartDate) AS PreviousSchoolID
        FROM @t t 

然后我就简单的用LAG()函数来获取之前的学校。这给出了以下结果

如果您只需要当前和以前的学校,那么您可以将最终的 select 语句包装为子查询,然后只选择没有 EndDate 的行

SELECT * FROM (
    SELECT 
        *
        , LAG(SchoolID, 1, NULL) OVER(PARTITION BY ChildID ORDER BY StartDate) AS PreviousSchoolID
        FROM @t t 
    ) h WHERE EndDate IS NULL

这会给出这个结果。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-19
    • 2014-03-27
    • 1970-01-01
    • 2011-06-07
    • 1970-01-01
    相关资源
    最近更新 更多