引用INFORMATION_SCHEMA中的CTE

时间:2013-12-17 18:57:26

标签: sql sql-server tsql common-table-expression

SQL SERVER 2008中的INFORMATION_SCHEMA中是否存在CTE?

我正在尝试使用CTE编写查询,我需要从INFORMATION_SCHEMA引用CTE,如下所示:

SELECT R.RowNum, c.COLUMN_NAME
FROM
(
    select ROW_NUMBER() over (partition by c.firstName, c.lastName, c.userEmail,       c.assessmentTitle order by c.officeTitle asc) as RowNum
    from class as c
) as R
inner join INFORMATION_SCHEMA.[COLUMNS] as c on
c.TABLE_NAME = 'myCTE' and c.COLUMN_NAME not in('LastName', 'firstName',     'userEmail', 'officeTitle')

但我没有结果。

我认为那是因为我无法从INFORMATION_SCHEMA引用CTE。

有没有办法让这项工作?

感谢

1 个答案:

答案 0 :(得分:2)

信息模式中不存在cte,它只是在运行时“存在”,就像表变量一样。

解决方案是引用cte引用的表,而不是cte本身,如果是多个表,则使用cte创建视图。