我有以下查詢:一個日期檢查整個查詢
select
fp.id,
fr.id,
sum(case
when to_date(fp.offered_date) BETWEEN TO_DATE(:ad_startdate, 'YYYY-MM-DD')
AND TO_DATE(:ad_enddate, 'YYYY-MM-DD') and fp.result <> 'E'
then 1
else 0
end) total,
sum(case when fp.result = 'G'
and to_date(fp.offered_date) >= :ad_startdate
and to_date(fp.offered_date) <= :ad_enddate then 1 else 0 end) colorgreen,
sum(case when fp.resultat = 'R'
and to_date(fp.offered_date) >= :ad_startdate
and to_date(fp.offered_date) <= :ad_enddate then 1 else 0 end) colorred
FROM
fruit_properties fp, fruit fr
WHERE
fp.id = fr.id
GROUP BY
fp.id, fr.id
我檢查日期1次次金額列,並有此可一次不知何故的感覺?現在,如果我只在總列中檢查一次,那麼colorgreen + colorred可能會比總數大,因爲無論它們具有哪個日期,它都會計數。
我的查詢可以以某種方式增強嗎?
是的,你是對的,我很新的SQL,這是一個馬虎做一個。其實查詢已經是一個嵌套選擇,我希望避免另一個。什麼會提供最好的性能,我的解決方案與2選擇或你的日期檢查更好,但與3? –
雖然客戶端使用這個特定的SQL確保它是一個日期輸入:) –
不要害怕嵌套選擇。他們不(必然)暗示更糟的表現(它只是一個觀點)。 oracle可以並且會在內部重寫查詢。你會發現嵌套select與原始查詢一樣。 – DazzaL