因此,讓我先解釋一下我們的設置。我們有SQL Server 2012的兩個表我們正在尋找:所有帳戶的客人的最短日期
PL_Guest and PL_MergedGuests
PL_Guest結構如下:
Create Table PL_Guest(
GuestID [int] IDENTITY(1,1) NOT NULL Primary Key,
CreatedDate [date] NOT NULL)
PL_MergedGuests結構如下:
Create Table PL_MergedGuests(
MergeID [int] IDENTITY(1,1) NOT NULL Primary Key,
VictimID [int] NOT NULL,
SurvivorID [int] NOT NULL)
所以情況這個:
PL_Guest表記錄了每一位客人創造的記錄, r從中刪除了任何記錄。當我們將兩個賬戶合併在一起時,PL_MergedGuests表格列出了victimid和survivorid的列表。例如,如果某人由於某種原因獲得了多個Guestid,我們會這樣做。現在,合併完成後,一線員工只需選擇該人員要保留的多個賬戶中的哪一個,通常根據客人手中的卡片完成,以便對客人進行更少的更改。如果嘉賓GuestID 5的CreatedDate 1/1/2013和嘉賓ID 10的CreatedDate 10/1/2015;並且合併完成後GuestID 5合併爲GuestID 10,則GuestID 5成爲Victim,GuestID 10成爲倖存者。當我們運行報告時,我們只查看倖存者賬戶。但是我們被要求爲每位客人查找最早的創建日期。因此,對於上面的示例,他們希望和條目返回GuestID 10創建日期2013年1月1日,因爲具有GuestID 10的訪客也具有GuestID 5,其具有較早創建日期的1/1/2013。
現在對於真正困難的部分,訪客可能被合併的次數沒有限制,並且這些表每個都有超過1億條記錄。我以爲這需要某種循環(我認爲這可能涉及到遞歸編碼,儘管我不確定這一點),但是我對如何編寫代碼感到迷茫。如果有幫助但無法修改當前表格,我可以創建新表格。
你說:「當我們運行報告中,我們只能看着生還者賬戶」。你現在怎麼知道哪些客人是倖存者? 「PL_Guest」表中有一些標誌嗎?如果是,請相應地編輯問題。 –
倖存者帳戶可以通過PL_Guest對PL_MergedGuest進行左加入來發現GuestID = VictimID,其中VictimID爲空 –