0
我無法過濾查詢的結果。這是我執行查詢:返回了以下結果在連接的查詢中過濾行
SELECT
ORE.ID AS OR_ID,
ORE.INIT_VERSION AS OR_INIT_VERSION,
ORE.INSERT_DATE AS OR_INSERT_DATE,
ORE.INIT_DATE AS OR_INIT_DATE,
ORE.END_DATE AS OR_END_DATE,
ORE.STATE AS OR_STATE,
ORE.ACTION_NAME AS OR_ACTION_NAME,
ORH.STATE_ID AS ORH_STATE_ID,
ORH.INSERT_DATE AS ORH_INSERT_DATE,
CS.STATE AS CS_STATE
FROM ORDER_REQUEST ORE
INNER JOIN ORDER_REQUEST_HISTORY ORH ON ORH.ORDER_REQUEST_ID = ORE.ID AND ORH.COMPONENT_ID = ORE.ARCH_ID
INNER JOIN COMPONENT_STATE CS ON CS.ID = ORH.STATE_ID
WHERE ORE.ARCH_ID = 219934
AND CS.STATE IN ('CREAZIONE', 'ANNULLATO', 'REVISIONE PIANIFICATA', 'APPROVAZIONE PIANIFICATA', 'APPROVAZIONE RIFIUTATA', 'COMPLETATO', 'COMPLETATA')
:
OR_ID OR_STATE OR_INIT_DATE OR_ACTION_NAME ORH_STATE_ID OR_END_DATE CS_STATE ORH_INSERT_DATE OR_INSERT_DATE OR_INIT_VERSION
8821 COMPLETATA 2014-04-07 ATT 111 2014-06-03 COMPLETATA 15-05-2014 12:48:32 07-04-2014 16:49:42 1
12266 ACQUISITO 2014-06-03 VAR 10018 NULL CREAZIONE 30-06-2014 18:59:40 03-06-2014 15:53:51 2
12266 ACQUISITO 2014-06-03 VAR 10018 NULL CREAZIONE 01-07-2014 12:56:20 03-06-2014 15:53:51 2
我想以這樣的方式,對於每個OR_ID我只得到與該行進行過濾最大的ORH_INSERT_DATE,即結果的第一行和第三行。 我嘗試了不同的方法,但似乎沒有工作。 特別是我一直在努力,複雜化JOIN:
INNER JOIN ORDER_REQUEST_HISTORY ORH ON ORH.ORDER_REQUEST_ID = ORE.ID AND ORH.COMPONENT_ID = ORE.ARCH_ID AND ORH.INSERT_DATE = (SELECT INSERT_DATE FROM ORDER_REQUEST_HISTORY ORH2 WHERE ORH2.ORDER_REQUEST_ID = ORE.ID)
但它只返回上述結果的第一行。我也嘗試以相同的方式使WHERE子句複雜化,但它仍然只返回上面結果集的第一行。
有沒有人知道什麼是正確的條款添加?或者我應該通過後續查詢並解決這個問題嗎?
非常感謝提前,
贊布羅塔
你是一個富有魅力的人! – Gianluca
其實我相信有一個更好的方法可以在沒有CTE的情況下做到這一點,但我遠離我的開發箱,所以我無法測試和發佈。 –
呃,我實際上已經浪費了一整個上午的時間來讓這個查詢工作嘗試很多事情:複雜的連接,複雜的地方,使用子選項,aso。我有你的答案爲我工作,這很好。再次感謝 – Gianluca