Find Jobs
Hire Freelancers

Fix issue with Postgresql function

$30 USD

Abgesagt
Veröffentlicht vor mehr als 11 Jahren

$30 USD

Bezahlt bei Lieferung
Need help in fixing an issue with passing paramaters to a subquery. The function shown below works correctly when the parameters are hardcoded in, however when trying to pass the parameters to the crosstab subquery an error is returned the parameters are not available. I can run the where statement outside the cross table query, but this makes it impossibly slow and unusable. What I need to know is why and a solution to this if it is possible to do within Postrgesql. Postgresql Database is verision 9.1 CREATE OR REPLACE FUNCTION f_testfunction1(character varying, date, date) RETURNS SETOF type_charges AS $BODY$ DECLARE rec type_charges%ROWTYPE; DECLARE handling numeric (5,2) := 1.50; DECLARE banda numeric (5,2) := SELECT pick_rate from pick_costs WHERE pick_band = 'A' AND cust_ref = $1 LIMIT 1; DECLARE bandb numeric (5,2) := SELECT pick_rate from pick_costs WHERE pick_band = 'C' AND cust_ref = $1 LIMIT 1; DECLARE bandc numeric (5,2) := SELECT pick_rate from pick_costs WHERE pick_band = 'B' AND cust_ref = $1 LIMIT 1; BEGIN FOR rec IN SELECT ctselect.gdn_custref,gh.gdn_date, gh.gdn_address_name, handling, a, b, c, SUM((a*banda)+(COALESCE(b,0)*bandb)+(COALESCE(c,0)*bandc)+handling) AS ttlpickcost,gh.gdn_method,gh.gdn_postage_chargeout,gh.gdn_postage_chargeto FROM (SELECT * FROM crosstab($$ SELECT gdn_custref,skref.stockref_pick_charge_code, count(skref.stockref_pick_charge_code) AS ttlcountcode FROM tbl_pre_gdn_header gh LEFT JOIN tbl_pre_gdn_body gb ON gh.gdn_gdn = gb.gdn_gdn JOIN tbl_stockref skref ON skref.stockref_stockref = gb.gdn_stockref LEFT JOIN tbl_pick_costs pc ON pc.pick_band = skref.stockref_pick_charge_code AND pc.cust_ref = gh.gdn_custcode WHERE gh.gdn_custcode = $1 AND gh.gdn_date BETWEEN $2 AND $3 GROUP BY gh.gdn_gdn, gdn_custref,gdn_date, gdn_address_name, gdn_postage_chargeto, gdn_method,gdn_postage_actual_cost, skref.stockref_pick_charge_code, skref.stockref_pick_charge_code ORDER BY gdn_custref $$) AS ct(gdn_custref character varying,A bigint, B bigint, C bigint)) as ctselect LEFT JOIN tbl_pre_gdn_header gh ON ctselect.gdn_custref = gh.gdn_custref GROUP BY ctselect.gdn_custref,gh.gdn_date, gh.gdn_address_name,handling, a, b, c,gh.gdn_method,gh.gdn_postage_chargeout,gh.gdn_postage_chargeto ORDER BY ctselect.gdn_custref LOOP RETURN NEXT rec; END LOOP; RETURN; END; $BODY$ LANGUAGE plpgsql VOLATILE COST 100 ROWS 1000;
Projekt-ID: 4123705

Über das Projekt

2 Vorschläge
Remote Projekt
Aktiv vor 11 Jahren

Möchten Sie etwas Geld verdienen?

Vorteile einer Ausschreibung auf Freelancer

Legen Sie Ihr Budget und Ihren Zeitrahmen fest
Für Ihre Arbeit bezahlt werden
Skizzieren Sie Ihren Vorschlag
Sie können sich kostenlos anmelden und auf Aufträge bieten
2 Freelancer bieten im Durchschnitt $30 USD für diesen Auftrag
Avatar des Nutzers
I would like to work on your project
$30 USD in 3 Tagen
4,9 (111 Bewertungen)
6,2
6,2
Avatar des Nutzers
I have worked for Skype as a PostgreSQL developer for 2.5 years. This sort of thing is my specialty.
$30 USD in 1 Tag
0,0 (0 Bewertungen)
0,0
0,0

Über den Kunden

Flagge von AUSTRALIA
Sydney, Australia
4,9
116
Zahlungsmethode verifiziert
Mitglied seit Okt. 16, 2010

Kundenüberprüfung

Danke! Wir haben Ihnen per E-Mail einen Link geschickt, über den Sie Ihr kostenloses Guthaben anfordern können.
Beim Senden Ihrer E-Mail ist ein Fehler aufgetreten. Bitte versuchen Sie es erneut.
Registrierte Benutzer Veröffentlichte Jobs
Freelancer ® is a registered Trademark of Freelancer Technology Pty Limited (ACN 142 189 759)
Copyright © 2024 Freelancer Technology Pty Limited (ACN 142 189 759)
Vorschau wird geladen
Erlaubnis zur Geolokalisierung erteilt.
Ihre Anmeldesitzung ist abgelaufen und Sie wurden abgemeldet. Bitte melden Sie sich erneut an.