我有一個查詢,我需要在常規表中提取數據並將兩行數據放入一行。
我有包括Oracle 11g - 創建並列比較表comlumn數據
StudentID AUDIT_ACTN Audit_Date .....
aaa A 01/01/2010
aaa A 03/04/2011
aaa A 02/02/2013
aaa D 09/10/2010
aaa D 05/06/2011
aaa D 06/07/2013
aaa A 11/12/2014~
bbb A 01/01/2010
bbb A 03/04/2011
bbb A 02/02/2013
bbb D 09/10/2010
bbb D 05/06/2011
bbb D 06/07/2013
bbb A 11/12/2014~
行我想這樣
StudentID AUDIT_ACTN Audit_Date StudentID AUDIT_ACTN Audit_Date
aaa A 01/01/2010 aaa D 09/10/2010
aaa A 03/04/2011 aaa D 05/06/2011
aaa A 02/02/2013 aaa D 06/07/2013
aaa A 11/12/2014 NULL NULL NULL
bbb A 01/01/2010 bbb D 09/10/2010
bbb A 03/04/2011 bbb D 05/06/2011
bbb A 02/02/2013 bbb D 06/07/2013
bbb A 11/12/2014 NULL NULL NULL
的一個& d數據行的相關輸出,A =的東西添加到記錄和d =刪除的東西記錄(某事是一個指標)。這是合乎邏輯的,因爲您必須在刪除它之前添加一些內容,並且無法將其添加兩次,而無需先刪除它。
我當前的腳本可能會走錯路,但這裏走;
select a.StudentId,a.Audit_Date,a.AUDIT_ACTN,d.StudentId,Audit_Date,d.AUDIT_ACTN,
from table a
join
(select *
from
(Select StudentId, Audit_Date,AUDIT_ACTN
from table b
Where b.AUDIT_ACTN='D'
order by Audit_Date
)
where rownum=1
) d on a.StudentId = d.StudentId
and a.AUDIT_ACTN='A'
and Select * from (Select Audit_Date
Order by a.StudentId, a.Audit_Date
我知道這是錯誤的,但我在哪裏何去何從。如果任何人都能幫助並指引我朝着正確的方向發展。這將不勝感激。
我目前的嘗試爲我帶來了零行,當我拿出rownum時,它帶給我一個x連接,返回12行。 感謝 羅傑
我不知道,我跟着你如何找出聚合函數,其中A列映射到其D行。樣本中的所有行都與同一個「StudentID」相關。你是否剛剛與他們聯繫,說特定學生的第一個D(由audit_date命令)必然與第一個A(由audit_date'再次排序)匹配?這在你構建的場景中似乎不太可能 - 我可能會以不同的順序刪除值,而不是添加它們或刪除一些值而不是其他值。 –
謝謝你的想法。行不會被刪除。這是一個審計表,記錄系統中的操作。你是對的 - 沒有硬鏈接,只有邏輯鏈接。例如aaa在某個日期分配給他們的指標,然後在另一個日期之後將其刪除。然後在某個日期再次重新添加。因此,您不能在沒有刪除交易的情況下向該人添加指標(除非第一次添加該指標)。沒有添加交易,您不能刪除指標。樣本中的日期反映了這一點(我希望)。我希望這解釋更多一點。 – Darklantern