我有以下看法:使用計算的情況下,在結果中的PostgreSQL
CREATE OR REPLACE VIEW view_a AS
SELECT distinct p.partid, case when
(SELECT EXTRACT(YEAR FROM age) * 12 + EXTRACT(MONTH FROM age)
FROM age(NOW(), LEAST(pp.createdate)) AS t(age)) AS months_between
<24 then months_between::integer else 24 end as timeframe
FROM ....
WHERE ....;
這種觀點需要createdate
(每partid
最早記錄的創建日期的時間戳),並計算自該日起幾個月過去了到NOW()
一樣做here 如果結果小於24(個月)我想這個結果,否則我想24
這目前沒有工作,不接受的情況下中間的AS months_between
。
我該怎麼做?
編輯:
例如這個查詢工作:
SELECT distinct p.partid, case when
(SELECT EXTRACT(YEAR FROM age) * 12 + EXTRACT(MONTH FROM age)
FROM age(NOW(), LEAST(pp.createdate)) AS t(age))
<24 then 5 else 24 end as timeframe
FROM ....
WHERE ....;
但是它會返回5或24,這不是我想要的。我希望它返回CASE中計算的值。
爲了簡化問題,基本形式是:
case when calculated_value < 24 then calculated_value else 24 end;
我希望能夠到的情況下返回calculated_value。
你不能在這裏使用LEAST嗎?請參閱https://www.postgresql.org/docs/8.1/static/functions-conditional.html#AEN12704 –
@RC。至少不是問題。查看編輯。 – avi
然後,只需複製粘貼計算你的THEN ... ELSE –