我确定这是因为我不知道如何使用 LEFT JOIN,但我正在编写一个不返回 NULL 值的查询。这是查询:
CREATE TABLE #OrgMaster
(OrgName nvarchar(100))
INSERT INTO #OrgMaster (OrgName)
SELECT DISTINCT Organization
FROM StageReleaseCalendar_VW
SELECT SRC.Organization
, SRC.deploytype
, COUNT(SRC.deploytype) AS 'Deployment Count'
, DATEPART(m,SRC.actualstarttime) AS 'MonthNum'
, DATENAME(m,SRC.actualstarttime) AS 'MonthNam'
FROM #OrgMaster TTOM LEFT OUTER JOIN StageReleaseCalendar_VW SRC
ON LEFT(TTOM.OrgName, LEN(TTOM.OrgName)) = SRC.Organization
WHERE DATEDIFF(m, SRC.scheduledstarttime, CURRENT_TIMESTAMP) BETWEEN 1 AND 2
AND completerelease = 1
AND deploytype IN ('Service Pack','Hot Fix')
AND cancelled = 0
GROUP BY SRC.Organization, SRC.deploytype, DATEPART(m,SRC.actualstarttime), DATENAME(m,SRC.actualstarttime)
DROP TABLE #OrgMaster
共有四个组织:商业、消费者、合作伙伴和销售。创建临时表后,如果我再运行以下查询:
从#OrgMaster 中选择组织名称
结果如下:
商业消费者合作伙伴销售
合作伙伴在 7 月或 8 月没有任何类型的部署,所以我想要获得的是一组结果,其中包括合作伙伴的四个 NULL 记录——7 月的修补程序记录、8 月的修补程序记录、7 月的服务包记录,以及 8 月的服务包。相反,我得到一个结果集,该结果集仅限于那些实际上已经发生部署的条目。
任何人都可以在这里看到我不理解的内容吗?
谢谢。