I'm using Oracle 9.2.0.2. I don't think it's a problem with the query because I can cut and paste it into TOAD and it runs with no problem. This is what's getting prepared:
"SELECT GREATEST(ROUND((SUM(mth_01 + mth_02 + mth_03 + mth_04 + mth_05
+ + mth_06 + mth_07 + mth_08 + mth_09 + mth_10 + mth_11 + mth_12) / 36
+5 ) * 120 ), ROUND (SUM (mth_08 + mth_09 + mth_10 + mth_11))) QTY, b
+. p_dlrnet, b.p_dlrsplrcode
FROM pac.historyreportmonthlybysku a
, stsc.sku b
WHERE a.loc = ?
AND a.dmdunit = ?
AND a.loc = b.loc
AND a.dmdunit = b.ITEM
GROUP BY a.loc
, a.dmdunit
, b.p_dlrnet
, b.p_dlrsplrcode"
| [reply] [d/l] |
| [reply] |
You mean you have a table with columns mth_01, mth_02, ... mth_12? Looks like a perfect example of an incorrectly designed table to me. Let's suppose the pac.historyreportmonthlybysku had columns id,loc,dmdunit (primary key is the id) and there was a table pac.historyreportmonthlybyskuval with columns id,mth,qty (where mth is the number of month and qty is the value for that month, primary key is (id,mth)):
SELECT GREATEST(
ROUND(SELECT SUM(qty) FROM pac.historyreportmonthlybyskuval as hv
+ WHERE hv.id = h.id),
ROUND(SELECT SUM(qty) FROM pac.historyreportmonthlybyskuval as hv
+ WHERE hv.id = h.id and mth >= ? and mth <= 11)
) QTY,
b.p_dlrnet, b.p_dlrsplrcode
FROM pac.historyreportmonthlybysku h -- at least use meaningfull let
+ters!
JOIN stsc.sku ON sku.loc = h.loc and sku.ITEM = h.dmdunit
WHERE a.loc = ?
AND a.dmdunit = ?
GROUP BY a.loc, a.dmdunit, b.p_dlrnet, b.p_dlrsplrcode
No need for dynamic SQL. So you are more likely to be able to reuse the query plan instead of forcing Oracle to recompile and reoptimize your query every time.
{REM}I think I'll go crazy when I finally move to (name snipped to protect the quilty) with their 8500 tables in the database. A separate table for the usernames&passwords of each client ... oh my! And the butt that deserves to be kicked is long gone.{/REM}
| [reply] [d/l] |
Can anyone please help me with this?
| [reply] |