代码之家  ›  专栏  ›  技术社区  ›  dkackman Srinivas Kokkula

从事件表创建图形的Sql查询

  •  -1
  • dkackman Srinivas Kokkula  · 技术社区  · 4 年前

    我在SQL Server中有一个简单的旧表,如下所示:

    JOB    Step     Timestamp
    ----------------------------------
    1      begin    12/25/2021 1:00 AM
    1      foo      12/25/2021 1:01 AM
    1      bar      12/25/2021 1:02 AM
    1      end      12/25/2021 1:03 AM
    

    JOB    Source    Target   Timestamp
    --------------------------------------------
    1      begin     foo      12/25/2021 1:01 AM
    1      foo       bar      12/25/2021 1:02 AM  
    1      bar       end      12/25/2021 1:03 AM
    

    这不是一个SQL Server图表表,但我希望它的行为与本例中的一样。

    这最终将在PowerBI中使用 a force directed graph visualization ,所以T-SQL或DAX中的答案适用于我的用例。

    1 回复  |  直到 4 年前
        1
  •  2
  •   Stu    4 年前

    在t-sql中,使用 窗口函数,下面应该会产生您预期的结果

    select JOB, [Source], [Target], [TimeStamp]
    from (
        select JOB, Step [Source],
            Lead(Step) over(partition by JOB order by [Timestamp]) [Target],
            Lead([Timestamp]) over(partition by JOB order by [Timestamp]) [TimeStamp]
        from t
    )t
    where [Target] is not null;