声明变量PostgreSQL



我试图声明一个变量,我将传递一个值,但即使只有一个例子,我也会遇到不同的错误。例如:unexpected end of function definition at end of input.我认为原因是我正在将值传递给一个临时表,但我不知道如何修复它

DO $$
DECLARE var2 varchar(20) := 'dzien';
BEGIN
SELECT 
CASE WHEN var2 = 'dzien' THEN to_date((to_char(czasRozmowy, 'YYYY/MM/DD' )),'YYYY/MM/DD') ELSE to_date('0000/00/00', 'YYYY/MM/DD')
END as data_,
COUNT(DISTINCT(lekta_call_id)) iloscRozmow
,COUNT(DISTINCT(czasProcesu)) iloscProceso
,SUM(czySukces) iloscRozmowSukces
,SUM(czyTransfer) iloscRozmowTransfer
,SUM(czyRozlaczone) iloscRozmowRozlaczonych
,SUM(czyWsylanySMS) iloscSMS
FROM
(
SELECT 
c.start_time czasRozmowy
,d.process_start_time czasProcesu
,c.l_call_id l_call_id
,CASE WHEN end_call_status=3 THEN 1 ELSE 0 END czySukces
,CASE WHEN end_call_status=2 THEN 1 ELSE 0 END czyTransfer
,CASE WHEN end_call_status=1 THEN 1 ELSE 0 END czyRozlaczone
,CASE WHEN send_sms=true THEN 1 ELSE 0 END czyWsylanySMS
FROM "Conversat"  C 
left join dialogues_details d on c.l_call_id=d.l_call_id
) as tabelka
group by data_
END $$;

试试这个

CREATE OR REPLACE FUNCTION _get_result(
_var2 VARCHAR DEFAULT NULL
) RETURNS TABLE (
iloscRozmow INTEGER,
iloscProceso INTEGER,
iloscRozmowSukces INTEGER,
iloscRozmowTransfer INTEGER,
iloscRozmowRozlaczonych INTEGER,
iloscSMS INTEGER,
) AS $$
BEGIN

RETURN QUERY SELECT 
CASE WHEN _var2 = 'dzien' THEN to_date((to_char(czasRozmowy, 'YYYY/MM/DD' )),'YYYY/MM/DD') ELSE to_date('0000/00/00', 'YYYY/MM/DD')
END as data_,
COUNT(DISTINCT(lekta_call_id)) iloscRozmow,
COUNT(DISTINCT(czasProcesu)) iloscProceso,
SUM(czySukces) iloscRozmowSukces,
SUM(czyTransfer) iloscRozmowTransfer,
SUM(czyRozlaczone) iloscRozmowRozlaczonych,
SUM(czyWsylanySMS) iloscSMS
FROM
(
SELECT 
c.start_time czasRozmowy,
d.process_start_time czasProcesu,
c.l_call_id l_call_id,
CASE WHEN end_call_status=3 THEN 1 ELSE 0 END czySukces,
CASE WHEN end_call_status=2 THEN 1 ELSE 0 END czyTransfer,
CASE WHEN end_call_status=1 THEN 1 ELSE 0 END czyRozlaczone,
CASE WHEN send_sms=true THEN 1 ELSE 0 END czyWsylanySMS
FROM "Conversat"  C 
left join dialogues_details d on c.l_call_id=d.l_call_id
) as tabelka
group by data_;
END
$$ LANGUAGE 'plpgsql';
SELECT * FROM _get_result('dzien');

最新更新