我有一張看起來像的桌子:

現在我想根據創建日期列和 str_val 列為每個組獲取最小和最大日期。因此,對于 group_id 1 和 object_id 1 必須顯示 01-01-2010 和 25-04-2016 以及 group_id 2 和 object_id 2 都為 01-02-2001 的最大值和最小值。這可以使用oracle sql實作嗎?
我想得到:

uj5u.com熱心網友回復:
如果整個資料集能夠勝任樣本資料集,那么使用這樣的查詢
SELECT group_id, object_id,
MIN(LEAST(creation_date,
CASE WHEN LENGTH(TRIM(str_val))=10 AND INSTR(str_val,'-')>0 THEN
TO_DATE(TRIM(str_val),'dd-mm-yyyy')
END)) AS "MIN",
MAX(GREATEST(creation_date,
CASE WHEN LENGTH(TRIM(str_val))=10 AND INSTR(str_val,'-')>0 THEN
TO_DATE(TRIM(str_val),'dd-mm-yyyy')
END)) AS "MAX"
FROM t
GROUP BY group_id, object_id
ORDER BY group_id, object_id
presumingcreation_date是 DATE 型別,str_val顯然是字串型別。
uj5u.com熱心網友回復:
然后你可以使用 group by:
SELECT GROUP_ID, OBJECT_ID, MIN(CREATION_DATE), MAX(CREATION_DATE)
FROM TABLE
GROUP BY GROUP_ID, OBJECT_ID
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/476280.html
