我有这个疑问
SELECT
*
FROM
PROJEMPLTRANS AS pej
LEFT JOIN PROJTABLE AS pt ON pt.PROJID = pej.PROJID
LEFT JOIN
(
SELECT
WRKCTRRESOURCEGROUPRESOURCE.RECID
FROM
WRKCTRRESOURCEGROUPRESOURCE
LEFT JOIN WRKCTRRESOURCEGROUP ON
WRKCTRRESOURCEGROUPRESOURCE.RESOURCEGROUP = WRKCTRRESOURCEGROUP.RECID
WHERE
WRKCTRRESOURCEGROUP.WRKCTRID = 'Z_NAS'
) AS skupina
ON skupina.RECID = pej.RESOURCE_
不幸的是,这部分有效:
WHERE WRKCTRRESOURCEGROUP.WRKCTRID = 'Z_NAS'
无论我是否有它,我总是得到相同数量的行。 我正在对 Microsoft Dynamics 365 FO 进行 SQL 查询
我厌倦了使用 CTE,但结果相同。
这是使用 CTE 的查询:
WITH skupina AS (
SELECT
WRKCTRRESOURCEGROUPRESOURCE.RECID
FROM
WRKCTRRESOURCEGROUPRESOURCE
LEFT JOIN WRKCTRRESOURCEGROUP ON
WRKCTRRESOURCEGROUPRESOURCE.RESOURCEGROUP = WRKCTRRESOURCEGROUP.RECID
WHERE
WRKCTRRESOURCEGROUP.WRKCTRID = 'Z_NAS'
)
SELECT
*
FROM
PROJEMPLTRANS AS pej
LEFT JOIN PROJTABLE AS pt ON pt.PROJID = pej.PROJID
LEFT JOIN skupina ON skupina.RECID = pej.RESOURCE_;
摆脱
LEFT JOIN
并尝试普通的内心JOIN
。 LEFT JOIN
保留第一个表中与您的 ON
子句不匹配的行,因此您会从该表中获得一团糟的额外结果。