2017-11-20 6 views
-1
id_session,x,z,time 
1,-10,-10,0 
1,-10,-10,1 
1,-5,-4,2 

私はこの機能を持っている:関数にテーブルを挿入するにはどうすればよいですか?

Select x.x,x.z,sum(case when x=nextlat and z=nextlng then 0 else 1 end) s 
From 
( Select x, 
      z, 
      lead(x,1,-9999) over (order by tempo) nextlat,    
      lead(z,1,-9999) over (order by tempo) nextlng 
      from xmltrack where id_session = 1 
) x 
Group by x.x,x.z 
order by s desc 

私は、パラメータとしてid_sessionで関数を作成する方法は?このような 何か:私はid_sessionを想定してい

CREATE OR REPLACE FUNCTION xmlintersezioni (idsession integer) 
    RETURNS TABLE (cx integer, cz integer, cs integer) AS $$ 
    BEGIN 
    RETURN QUERY Select x.x,x.z,sum(case when x=nextlat and z=nextlng then 0 else 1 end) s 
      From 
      (select x, 
      z, 
      lead(x,1,-9999) over (order by tempo) nextlat,    
      lead(z,1,-9999) over (order by tempo) nextlng 
      from xmltrack where id_session = idsession 
) x 
Group by x.x,x.z 
order by s desc;  
END; $$ 
LANGUAGE 'plpgsql'; 
+2

xmlintersezioniの問題は何ですか? –

答えて

0

は、カスタムタイプである - このような何か:

create type id_session_type AS <whatever>; 

create table xmltrack (
    id_session id_session_type, 
    x integer, 
    y integer, 
    z integer 
); 

その場合、私はあなたが同じデータ型を使用するだけですだと思いますあなたの関数内で:

CREATE OR REPLACE FUNCTION xmlintersezioni (idsesssion id_session_type) 
関連する問題