Ste*_*ven 7 sql t-sql sql-server sql-server-2008
所以这实际上不是我的代码,而只是我正在尝试做的一个例子.理想情况下,我可以使用INNER JOINS和外键关系来获取数据,但我不能在现实生活中 - 这只是一个简单的例子.
SELECT [EmployeeID],
[DepartmentID],
(SELECT Title FROM Depts WHERE ID = [DepartmentID]) AS Department,
(SELECT Name FROM DeptHeads WHERE DeptName = Department) AS DepartmentLead
FROM Employees E
Run Code Online (Sandbox Code Playgroud)
我从一个表(Employees)获取数据.
我在子查询的where子句中使用该表(DepartmentID)中的一列,并从中创建别名(Department)
我正在尝试做与上面相同的事情,除了在where子句中使用该别名.
我收到一个错误说:
列名称"部门"无效
有没有更好的方法让我这样做,或者解决这个问题?
您不能使用刚刚定义的别名.您可以:
SELECT * FROM (
SELECT [EmployeeID],
[DepartmentID],
(SELECT Title FROM Depts WHERE ID = [DepartmentID]) AS Department,
(SELECT Name FROM DeptHeads WHERE DeptName = Department) AS DepartmentLead
FROM Employees E
) Base
WHERE Base.Department = ...
Run Code Online (Sandbox Code Playgroud)
;WITH MyCTE AS
(
SELECT [EmployeeID],
[DepartmentID],
(SELECT Title FROM Depts WHERE ID = [DepartmentID]) AS Department,
(SELECT Name FROM DeptHeads WHERE DeptName = Department) AS DepartmentLead
FROM Employees E
)
SELECT *
FROM MyCTE
WHERE Department = 'IT'
Run Code Online (Sandbox Code Playgroud)