• I must spend a bit of time looking into the factless fact idea. I am in no rush.

    However, if I went for the initial solution, I suspect I still need to work out the ranking between tasks because the precise moment an application "move" from one task of type X to a task of type Y is when the first task of type Y following a type of type X starts...

    I would then have a query like

    [font="Courier New"]SELECT DISTINCT FactFrom.ApplicationKey

    FROM TaskFact TaskFrom

    INNER JOIN TaskFact TaskTo ON TaskFrom.ApplicationKey = Facto.ApplicationKey

    AND TaskFrom.TaskRank = TaskTo.TaskRank - 1

    AND TaskFrom.TaskType = X

    AND TaskTo.TaskType = Y

    WHERE TaskTo.Start_StartDateTime >= @MinDate

    AND TaskTo.Start_StartDateTime <= @MaxDate

    [/font]

    I suspect the factless fact idea is better because it's all worked out upfront in the ETL and the final query gets straight forward, which is pretty much my goal as we won't use cubes.