【发布时间】:2016-11-07 18:22:00
【问题描述】:
我有这个问题:
SELECT C.[First Name],
C.[Last Name],
SUM(Salary.Emp_Salary) AS 'Current Salary'
FROM
(
SELECT
Emp_First_Name AS "First Name",
Emp_Last_Name AS "Last Name",
MAX(Emp_Salary_Change_Year) AS "Change Year"
FROM Employee_Details AS e
INNER JOIN Country AS co ON e.Emp_Country_Id = co.Country_Id
INNER JOIN State AS s ON e.Emp_State_Id = s.State_Id
INNER JOIN Designation AS d ON e.Desig_Id = d.Desig_Id
INNER JOIN Salary AS sa ON e.Emp_Id = sa.Emp_Id
WHERE Emp_Active = 1
GROUP BY Emp_First_Name, Emp_Last_Name,
Emp_Middle_Name, Country_Name, Desig_Name) AS C
INNER JOIN Salary ON C.[Change Year] = Salary.Emp_Salary_Change_Year
group by C.[First Name],
C.[Last Name];
返回:
First Name Last Name Current Salary
Chen Chen 76000.00
Sahi King 156000.00
Venessa Katarina 185000.00
如何使用 CTE 进行此查询? 我知道使用 WITH 子句,但我无法让它工作,因为查询很复杂。我用这个作为参考:http://www.codeproject.com/Articles/265371/Common-Table-Expressions-CTE-in-SQL-SERVER 但它只包含简单的示例。
谢谢。
【问题讨论】:
-
您的查询是否提供了您想要的结果?
-
解决了。我必须在整个 cte 之后添加一个 SELECT * FROM T 子句
-
非常好。你能把你的结果显示为答案吗?
标签: sql sql-server tsql common-table-expression