如何使用两个源的值创建临时表或CTE

时间:2018-01-14 02:17:20

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

需要为报告目的构建临时表或CTE。用户可以从下拉列表中选择位置和课程。

所涉及的表是包含所有员工的Person表和将从下拉列表中选择课程的Common Table Expression。

我需要能够创建一个临时表或CTE,其中包含来自人员表的员工ID字段和来自课程CTE的课程名称字段。

例如,如果选择了课程A,B,C,则每个员工将有三个记录,每个记录对应一个选定的课程。因此,员工1将在此临时表或CTE中拥有三条记录。我使用的是SQL Server 2008。

1 个答案:

答案 0 :(得分:0)

您可以在CTE中使用INNER JOINUNION查询从多个表中获取值。所以如果你想为每个员工获得EMployeeId和CourseName,你可以像这样加入CTE里面的表

;WITH CTE
AS
(
    SELECT
        E.EmployeeId,
        C.CourseNm
        FROM dbo.Employee E
            INNER JOIN dbo.Course C
                ON E.CourseId = C.CourseId
)
SELECT
    *
    FROM CTE

如果你想使用Temp表,你可以尝试这个

SELECT
    E.EmployeeId,
    C.CourseNm
    INTO #Temp
    FROM dbo.Employee E
        INNER JOIN dbo.Course C
            ON E.CourseId = C.CourseId

SELECT * FROM #Temp
相关问题