[英]How can I add a where statement on list conditionally in report query?
[英]How can I add a WHERE statement to a WHERE statement in Postgres?
我想做這樣的事情:
CASE WHEN Derp.Herp = 'Nerp' THEN 'Gerp' ELSE NULL ENDS AS Herpty
WHERE Herpty IS NOT NULL
這個想法是我希望在相同的查詢中運行,但問題是它Postgres通常會告訴我Herpty不存在(可能是因為它是在同一查詢中創建的),也許是約定俗成的-周圍? 對於我來說,這里的想法是獲得一個Herpty列,以排除'Nerp'
中不是'Nerp'
的內容Derp.Herp
,我不希望返回NULL。
更新:到目前為止,我得到的答案沒有幫助,我的實際查詢稍微復雜一些,我無法在WHERE語句中輸入WHERE Derp.Herp <> 'Nerp'
因為在我的實際查詢中它實際上經過了2列WHEN語句,所以它更像是這樣: Derp.Herp = 'Nerp' AND Derp.Burp = 'Durp' THEN 'Gerp'
因此,如果我在WHERE子句中添加它,它將變得模棱兩可,即WHERE Derp.Herp <> 'Nerp' AND Derp.Burp <> 'Durp'
將完全消除Nerp和Durp,即使它們在2列中都不匹配,我正在為非營利性組織開展這項工作,請提供幫助。
這是我嘗試重新編寫代碼以使其更准確地反映出來: http ://pastebin.com/PgvAFvfq
簡短的回答:不,不完全是。 這是計算所得的列,在WHERE子句中不可用。 但是根據您的示例,您可以執行以下操作
WHERE Derp.Hepr <> 'NERP'
但是,那么整個查詢似乎幾乎沒有用。 您應該向我們展示您的真實查詢。
您可以稍微重新組織一下查詢;
SELECT CASE WHEN Derp.Herp = 'Nerp' THEN 'Gerp' ELSE NULL ENDS AS Herpty
WHERE Herpty IS NOT NULL
是相同的
SELECT 'Gerp' AS Herpty WHERE Derp.Herp = 'Nerp';
你有沒有嘗試過:
當Derp.Herp ='Nerp'然后以'Gerp'結尾為空時的情況在這種情況下,當Derp.Herp ='Nerp'然后'Gerp'否則以NULL結尾的情況不為空。
檢查這一。 我希望它能起作用。
SELECT CASE WHEN Derp.Herp = 'Nerp' AND Derp.Burp = 'Durp'
THEN 'Gerp'
FROM (SELECT * FROM YOURTABLE
WHERE Derp.Herp <> 'Nerp' AND Derp.Burp <> 'Durp') Derp
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.