【发布时间】:2019-09-14 06:35:46
【问题描述】:
在处理以下 SQL 代码时,我似乎无法找到正确连接正在创建的 2 个 CTE 以获得正确(或至少是我预期的)记录数的方法。
TEST 1 & TEST 2 只返回每个 CTE 独立产生的记录; n & m。
我希望能够使用 TEST 3(LEFT JOIN)或 TEST 4(INNER JOIN)检索 n 条记录,但无论如何我使用什么类型的连接(我已经尝试了所有的等值连接);我不断收到 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
*/
我怎样才能得到我想要的记录?或者我还能如何加入这些表?
【问题讨论】:
标签: sql sql-server sql-server-2005