也許有人遇到過同樣的問題。
我有這個查詢:
select
d.referenca,
paketi.id_upnik,
date(zadnji_klic) as zadnji_klic,
date(datum_zadnjega_posiljanja_sms) as datum_zadnjega_posiljanja_sms,
date(zadnji_datum_opomina_maila) as zadnji_datum_opomina_maila,
date(datum_dopisa_dolznika) as datum_dopisa_dolznika,
case when zadnji_datum_opomina_maila > zadnji_klic or zadnji_klic is null and zadnji_datum_opomina_maila > datum_zadnjega_posiljanja_sms or datum_zadnjega_posiljanja_sms is null and zadnji_datum_opomina_maila > datum_dopisa_dolznika or datum_dopisa_dolznika is null then date(zadnji_datum_opomina_maila)
when datum_zadnjega_posiljanja_sms > zadnji_klic or zadnji_klic is null and datum_zadnjega_posiljanja_sms > zadnji_datum_opomina_maila or zadnji_datum_opomina_maila is null and datum_zadnjega_posiljanja_sms > datum_dopisa_dolznika or datum_dopisa_dolznika is null then date(zadnji_klic)
when datum_dopisa_dolznika > datum_zadnjega_posiljanja_sms or datum_zadnjega_posiljanja_sms is null and datum_dopisa_dolznika > zadnji_klic or zadnji_klic is null and datum_dopisa_dolznika > zadnji_datum_opomina_maila or zadnji_datum_opomina_maila is null then date(datum_dopisa_dolznika)
when zadnji_klic > datum_zadnjega_posiljanja_sms or datum_zadnjega_posiljanja_sms is null and zadnji_klic > zadnji_datum_opomina_maila or zadnji_datum_opomina_maila is null and zadnji_klic > datum_dopisa_dolznika or datum_dopisa_dolznika is null then date(zadnji_klic)
else null end as datum_zadnji_kontakt
from QUERIES AND SUBQUERIES
在最后一列中,我想獲得前 4 列中最年輕的日期。在這 4 列中,有一些日期,但也有空值。如果所有 4 個值都為空,則最后一列也應回傳空,如果至少有一個日期,則應回傳該日期。
問題是查詢作業但不正確。它并不總是需要最年輕的日期。我確定問題出在這部分代碼中:
case when zadnji_datum_opomina_maila > zadnji_klic or zadnji_klic is null and zadnji_datum_opomina_maila > datum_zadnjega_posiljanja_sms or datum_zadnjega_posiljanja_sms is null and zadnji_datum_opomina_maila > datum_dopisa_dolznika or datum_dopisa_dolznika is null then date(zadnji_datum_opomina_maila)
when datum_zadnjega_posiljanja_sms > zadnji_klic or zadnji_klic is null and datum_zadnjega_posiljanja_sms > zadnji_datum_opomina_maila or zadnji_datum_opomina_maila is null and datum_zadnjega_posiljanja_sms > datum_dopisa_dolznika or datum_dopisa_dolznika is null then date(zadnji_klic)
when datum_dopisa_dolznika > datum_zadnjega_posiljanja_sms or datum_zadnjega_posiljanja_sms is null and datum_dopisa_dolznika > zadnji_klic or zadnji_klic is null and datum_dopisa_dolznika > zadnji_datum_opomina_maila or zadnji_datum_opomina_maila is null then date(datum_dopisa_dolznika)
when zadnji_klic > datum_zadnjega_posiljanja_sms or datum_zadnjega_posiljanja_sms is null and zadnji_klic > zadnji_datum_opomina_maila or zadnji_datum_opomina_maila is null and zadnji_klic > datum_dopisa_dolznika or datum_dopisa_dolznika is null then date(zadnji_klic)
else null end as datum_zadnji_kontakt
任何人?
uj5u.com熱心網友回復:
嘗試使用 PostgreSQLGREATEST函式:
SELECT d.referenca,
paketi.id_upnik,
DATE(zadnji_klic) AS zadnji_klic,
DATE(datum_zadnjega_posiljanja_sms) AS datum_zadnjega_posiljanja_sms,
DATE(zadnji_datum_opomina_maila) AS zadnji_datum_opomina_maila,
DATE(datum_dopisa_dolznika) AS datum_dopisa_dolznika,
GREATEST(zadnji_klic,
datum_zadnjega_posiljanja_sms,
zadnji_datum_opomina_maila,
datum_dopisa_dolznika) AS datum_zadnji_kontakt
FROM QUERIES AND SUBQUERIES
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/498456.html
標籤:PostgreSQL 条件语句 案子
上一篇:PostgreSQL:如何查看當前的“授權使用模式”權限?
下一篇:postgresql中的當前設定
