我试图优化我的查询一点,我的想法是找到我正在寻找使用EXISTS子句的现有帐户。这是我想出了:凡存在优化
CREATE VIEW recruit_rev AS
SELECT p.clinic, CONCAT(p.last_name, ', ', p.first_name) AS doctor, p.email, p.hire_date, p.practice_date, q.period_id, q.fiscal_year, SUM(t.amount) AS production
FROM transactions t
INNER JOIN provider p
ON (t.clinic=p.clinic AND p.provider_id=t.provider_id)
CROSS JOIN period q
WHERE (t.time_ran BETWEEN q.period_start AND q.period_end)
AND impacts='P'
AND EXISTS (
SELECT p.provider_id
FROM provider p
WHERE (p.clinic=t.clinic AND p.provider_id=p.provider_id)
AND p.position_id=1
AND p.email LIKE '%-Time%')
GROUP BY p.clinic, p.email, p.hire_date, p.practice_date, q.period_id, q.fiscal_year, p.first_name, p.last_name
但是这不工作,说我只用了过滤器的一部分,正常的查询,并没有EXISTS我的当前工作查询。
AND p.position_id=1
AND p.email LIKE '%-Time%'
任何洞悉我转错了方向?提前致谢。
@MarkBannister'CONCAT'可用在SQL服务器2012+ – JamieD77
你不能只是'内部联接周期q ON t.time_ran BETWEEN q.period_start和q.period_end'而不是'CROSS JOIN'? – JamieD77
@ JamieD77:我不知道 - 谢谢你提供的信息。 –