加入这些CTE的方式是什么?

What would be the way to join these CTEs?

处理以下 SQL 代码时,我似乎无法找到正确加入正在创建的 2 个 CTE 以获得正确(或至少是我预期的)记录数的方法。

TEST 1 & TEST 2只是return每个CTE独立制作的记录; n & m.

我希望能够通过使用测试 3(左连接)或测试 4( INNER JOIN)但是,无论我使用什么类型的连接(并且我已经尝试了所有等值连接);我不断收到 m 条记录。


WITH
CTE_ALL_INSPECTIONS AS
(
    SELECT
            InspectorId,
            InspectionetailId
            ...
        FROM ...
        WHERE ...
),

CTE_ALL_INSPECTORS AS
(
    SELECT DISTINCT
            InspectorId,
            COUNT(InspectionDetailId) Inspections
        FROM CTE_ALL_INSPECTIONS
        GROUP BY InspectorId
)

/*
TEST 1:
*/
/*
    SELECT * FROM CTE_ALL_INSPECTORS
*/

/*
TEST 2:
*/
/*
    SELECT * FROM CTE_ALL_INSPECTIONS
*/

/*
TEST 3:
*/
/*
    SELECT
            CTE_ALL_INSPECTIONS.*,
            CTE_ALL_INSPECTORS.Inspections
        FROM
            CTE_ALL_INSPECTORS
            LEFT JOIN CTE_ALL_INSPECTIONS
                ON CTE_ALL_INSPECTIONS.InspectorId = CTE_ALL_INSPECTORS.InspectorId
*/

/*
TEST 4:
*/
/*
    SELECT
            CTE_ALL_INSPECTIONS.*,
            CTE_ALL_INSPECTORS.Inspections
        FROM
            CTE_ALL_INSPECTORS
            INNER JOIN CTE_ALL_INSPECTIONS
                ON CTE_ALL_INSPECTIONS.InspectorId = CTE_ALL_INSPECTORS.InspectorId
*/

如何获取我想要的记录?或者我还能如何加入这些表?

使用您的测试 3,但将 ...Inspections 设为最左边的查询:

SELECT CTE_ALL_INSPECTIONS.*
    , CTE_ALL_INSPECTORS.Inspections 
FROM CTE_ALL_INSPECTIONS
    LEFT JOIN CTE_ALL_INSPECTORS
        ON CTE_ALL_INSPECTIONS.InspectorId = CTE_ALL_INSPECTORS.InspectorId

这表示,"give me all the inspections, as well as any counts from Inspectors that exist"。