我创建了以下视图,
SELECT
currency_cd, SUM(comprate) AS salary, employee_code,
(SELECT SUM(c.comprate) AS Expr1
FROM dbo.employees_compensation AS c
INNER JOIN
(SELECT MAX(id) AS id, comp_ratecd
FROM dbo.employees_compensation
WHERE (effdt = (SELECT MAX(effdt) AS Expr1
FROM dbo.employees_compensation AS employees_compensation_1
WHERE (employee_code = b.employee_code)
)
) AND (employee_code = b.employee_code)
GROUP BY
comp_ratecd) AS a ON c.id = a.id) AS salary1
FROM
dbo.employees_compensation AS b
GROUP BY
currency_cd, employee_code
工作正常并给出了预期的结果。但问题是执行和给出结果需要时间。有时它也会出现错误,如Timeout等。你能帮我解决这个问题吗?
答案 0 :(得分:0)
也许你应该重组你的数据库?例如,创建将表示联接的表。 如果您不关心计时,可以通过创建 temprorary表或虚拟表(aka views)来避免超时错误。 避免使用这种复杂且嵌套的表达式。