簡體   English   中英

Postgres功能

[英]Postgres function

我在創建一個將接收2個輸入(startDate和endDate)的函數時遇到問題,它將返回這些日期之間的所有結果。 我認為語法是我的主要問題。 我當前使用的日期僅用於測試目的。 我該怎么做?

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;

我通過實際拆分所有內容來使其工作。 創建了一個生成總體數據的函數,然后創建了另一個函數,該函數將調用前一個數據並根據日期選擇來縮小結果范圍,依此類推……

稍后我將更新完整的代碼,也許它將對其他人有所幫助:)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM