如何制作一個比較過濾器(一個函式)?所以我們可以像這樣實作一個過濾器
因為我得到了這個控制臺輸出:
錯誤:WHERE 中不允許使用聚合函式
WHERE MAX(vr.utz) > p_utz_begin 和 fu.id_fl
這是代碼。
SELECT m_id_unit,
lf.CAN_freq,
lf.CAN_blackout,
lf.GPS_freq,
lf.GPS_blackout,
lf.chargeloss
FROM tlm.main_dash_tele_freq_blackout(m_id_unit, p_utz_begin, p_utz_end) lf
JOIN var.vreadings vr ON vr.id_unit = lf.m_id_unit
JOIN dat.fleet_units fu ON fu.id_unit = lf.m_id_unit
WHERE MAX(vr.utz) > p_utz_begin AND fu.id_fleet <> 10
uj5u.com熱心網友回復:
您不能將聚合函式與 WHERE 子句一起使用。如果需要聚合函式,請使用 HAVING 子句來過濾記錄。請參閱您的資料庫的檔案,了解 HAVING 和 GROUP BY 子句,以便根據您當前場景的需要進行過濾。
現在,您可以嘗試下面的代碼片段。在此片段中,我根據您在 GROUP BY 中的問題使用了您的所有列,并在 HAVING 而不是 WHERE 中添加了您的條件。
SELECT m_id_unit,
lf.CAN_freq,
lf.CAN_blackout,
lf.GPS_freq,
lf.GPS_blackout,
lf.chargeloss
FROM tlm.main_dash_tele_freq_blackout(m_id_unit, p_utz_begin, p_utz_end) lf
JOIN var.vreadings vr ON vr.id_unit = lf.m_id_unit
JOIN dat.fleet_units fu ON fu.id_unit = lf.m_id_unit
Group by m_id_unit,lf.CAN_freq, lf.CAN_blackout, lf.GPS_freq, lf.GPS_blackout, lf.chargeloss
HAVING MAX(vr.utz) > p_utz_begin AND fu.id_fleet <> 10;
uj5u.com熱心網友回復:
SQL HAVING 子句用于聚合函式。為了使用 MAX,您還應該包含一個分組依據。所以這樣的事情應該有效:
SELECT m_id_unit,
lf.CAN_freq,
lf.CAN_blackout,
lf.GPS_freq,
lf.GPS_blackout,
lf.chargeloss
FROM tlm.main_dash_tele_freq_blackout(m_id_unit, p_utz_begin, p_utz_end) lf
JOIN var.vreadings vr ON vr.id_unit = lf.m_id_unit
JOIN dat.fleet_units fu ON fu.id_unit = lf.m_id_unit
Group by m_id_unit,lf.CAN_freq, lf.CAN_blackout, lf.GPS_freq, lf.GPS_blackout, lf.chargeloss
HAVING MAX(vr.utz) > p_utz_begin AND fu.id_fleet <> 10
如果您有任何疑問,這里是一些關于將 MAX 與 HAVING 結合使用的資訊的鏈接:https ://www.w3resource.com/sql/aggregate-functions/Max-having.php
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/533984.html
標籤:数据库
上一篇:SQL:不使用group-by的GROUPBY陳述句
下一篇:SQL查找沒有的單位
