2017-01-06 5 views
0

2つの入力(startDateとendDate)を取る関数を作成する際に問題が発生し、その間にすべての結果が返されます。私は構文が私の主な問題だと思う。私が現在使っている日付は、テスト目的のためのものです。どうしたらいいですか?Postgres関数

CREATE OR REPLACE FUNCTION report_new(stDt date, endDt date) 
RETURNS TABLE("Form" integer, "CBID" character varying(4000),"Drug Duration" character varying(4000),"DateNotify" character varying(4000),"Dose" character varying(4000), 
"Agent" character varying(4000),"Onset" character varying(4000),"Expectedness" character varying(4000), 
"Grade" character varying(4000),"Investigator's opinion" character varying(4000),"Protocol No." character varying(4000), 
"Medical Monitor's Opinion" character varying(4000),"Status" character varying(4000),"Offset" character varying(4000), 
"Reported Term" character varying(4000),"Why Serious" character varying(4000),"Study No." character varying(4000),"Subject No." character varying(4000)) 

AS 
$BODY$ 

SELECT * FROM CROSSTAB(
'SELECT event_crf_id, i.description, id.value FROM item i, item_data id 
WHERE i.item_id=id.item_id 
AND id.item_id IN (select item_id from item_data where event_crf_id IN (select event_crf_id from event_crf where crf_version_id=88) 
AND name SIMILAR TO ''(SAE_SPONSSTDYNO|SAE_STUDYSUBJNO|SAE_IRBPROTNO|SAE_DRGUNINV|SAE_DOSEEVENT|SAE_GRADE|SAE_REPTERM|SAE_EVENTSTART|SAE_EXPOCCSA|SAE_OUTCOME_DAT|SAE_OUTCOME_STATUS|SAE_MM_OPN_REL|SAE_MONOPSER|SAE_EXP|SAE_RESULTDEATH|SAE_CBID|SAE_DTLTRSNT)'') 
AND ''id.date_created between '''||to_char(stDt, 'YYYY-MM-DD') || ''' AND '''||to_char(endDt, 'YYYY-MM-DD')'''ORDER BY 1,2') 
AS ct ("Form" integer, "CBID" character varying(4000),"Drug Duration" character varying(4000),"DateNotify" character varying(4000),"Dose" character varying(4000), 
"Agent" character varying(4000),"Onset" character varying(4000),"Expectedness" character varying(4000), 
"Grade" character varying(4000),"Investigator's opinion" character varying(4000),"Protocol No." character varying(4000), 
"Medical Monitor's Opinion" character varying(4000),"Status" character varying(4000),"Offset" character varying(4000), 
"Reported Term" character varying(4000),"Why Serious" character varying(4000),"Study No." character varying(4000),"Subject No." character varying(4000)) 

$BODY$ 
LANGUAGE 'sql' VOLATILE; 
+0

私は少し失われています。 。 。最初の段落の質問は、投稿のクエリと何が関係していますか? –

+0

postgresql関数のsetofやtableを返すためのGoogle - たくさんの例が見つかります – JosMac

+3

あなたは['format()'関数]を探していると思います(https://www.postgresql.org/docs/current/static/functions (例えば、%Lと%Lの間にid.date_created、param1、param2) ') – pozs

答えて

0

私は実際にすべてを分割して動作させました。データ全体を生成する関数を作成し、前の関数を呼び出し、日付選択に従って結果を絞り込むなどの関数を作成します。

フルコードで更新します後で、多分それは他の誰かを助けるでしょう:)

関連する問題