我需要創建一個宏或函數,它接受兩個參數,並在基本數據處理後將它們連接在一起。那麼這個文本字符串應該能夠用於任何其他查詢。Postgres宏,Concat間隔日期和表名在查詢中使用
CREATE OR REPLACE FUNCTION getData (_table text, _days text)
RETURNS text AS
$func$
SELECT $1 || to_char(CURRENT_TIMESTAMP - ($2 || ' days')::INTERVAL, 'YYYYMMDD');
$func$ LANGUAGE sql;
select * from getData('opportunity', '4') limit 10;
那麼我從這個期待是真正得到同樣的結果,如果我執行
select * from opportunity20151030 limit 10;
相反,我得到「opportunity20151030」
編輯:
的我們需要這樣做的原因是因爲我的僱主每晚都在做我們的銷售隊伍數據的快照,總共有大約17個對象。這就是爲什麼我不能返回一張桌子。返回表格需要指定列。但是我們需要能夠查詢各種表格。這確實需要只是一個小實用宏。這樣我們可以有一個查詢來生成比較今天和一週前的數據的圖表。這甚至可以是pgAdmin本身的內容,並且不限於作爲postgresql函數。有沒有一種方法可以執行該函數並在另一個查詢中內聯使用結果。我花了一個小時,
玩耍用的getData執行「SELECT * FROM $ 1」(「機會」,「4」)
類型的查詢,但顯然語言指定的變化,不能用什麼在兼容的SQL語句方面。
謝謝!
這看起來像一個可怕的數據模型。你應該首先需要這樣的功能。你爲什麼不使用分區/繼承呢? –
謝謝你的建議。我的僱主只想編寫一組查詢,以便從我們從salesforce獲取的夜間快照生成報告。這並不一定是在postgres中,而可以在像pgAdmin這樣的工具中。 –