T-SQL垂直方向的所有组合

时间:2015-07-17 10:36:11

标签: sql sql-server combinations recursive-query

我想在该子集示例之后找到所有可能的用户链的组合:

image

该示例的结果必须产生4个不同的用户标识链:

  1. 32,34 下,36 ... 39
  2. 32,35 下,36 ... 39
  3. 33,34 下,36 ... 39
  4. 33,35 下,36 ... 39
  5. 所有可以像那样显示在VERTICAL结果表中(在第一个示例之后)

    image

    在原始表中,我拥有关于不同userId / companyId的所有数据,因此我需要一个针对 CurrentLevel 用户

    的任何不同迭代的递归解决方案
    ;WITH CTE AS (
    SELECT
        CompanyId,
        CurrentLevel,
        UserId
    FROM @RESULT
    WHERE 
        CurrentLevel = 1
    
    UNION ALL
    
    SELECT      
        REC.CompanyId,
        REC.CurrentLevel,
        REC.UserId
    FROM @RESULT R
        INNER JOIN CTE REC ON 
        REC.CompanyId = R.CompanyId
        AND REC.CurrentLevel = R.CurrentLevel +1  )
    

    然后最后选择

    SELECT * FROM CTE
    

    但没有找到任何解决方案。

0 个答案:

没有答案