我创建了这个CTE,它从2个不同的表中返回名字和姓氏。我想使用CTE来识别具有相同姓氏的所有记录,并且一列的第一个名称以另一列的相同第一个字母开头。 这是CTE结果的一个例子。我希望使用CTE的SELECT仅返回突出显示的结果:
;WITH CTE AS
(
SELECT AD.FirstName AS AD_FirstName, AD.LastName AS AD_LastName, NotInAD.FirstName As NotInAD_FirstName, NotInAD.LastName As NotInAD_LastName
FROM PagingToolActiveDirectoryUsers AD JOIN
(
SELECT FirstName, LastName
FROM #PagingUsersParseName
EXCEPT
SELECT D.FirstName, D.LastName
FROM PagingToolActiveDirectoryUsers D
WHERE D.FirstName <> D.LastName AND D.LastName <> D.LoginName
AND D.LoginName LIKE '%[0-9]%[0-9]%'
) AS NotInAD ON NotInAD.LastName = AD.LastName
)
SELECT *
FROM CTE
WHERE (AD_LastName = NotInAD_LastName) AND (AD_FirstName LIKE ('''' + SUBSTRING(NotInAD_FirstName, 1, 1) + '%'''))
ORDER BY AD_LastName, AD_FirstName;
此查询的结果不返回任何行。 我做错了什么?
感谢。
答案 0 :(得分:3)
您使用单引号将要搜索的字符串括起来,但AD_FirstName
中的数据不会嵌入其中的单引号。我建议你用{/ 1>替换WHERE
子句的第一行
WHERE (AD_LastName = NotInAD_LastName) AND (AD_FirstName LIKE (SUBSTRING(NotInAD_FirstName, 1, 1) + '%'))
祝你好运。