我有數百行可能是相關的,它似乎不像一個正常的T-SQL GROUP BY會幫助我。這裏是場景:SQL Server 2014查找列之間的關係
表中的每一行都包含用戶的IP地址,電子郵件地址和其他聯繫信息。用戶可以輸入許多不同的行,但我只關心該人最完整的聯繫信息,我對他們與我聯繫的次數不感興趣。
下面是一個示例表:
當我組電子郵件,我得到兩個剩餘行。根據我動態選擇的IP,我可能沒有匹配的IP,然後按IP分組。
反過來也是一樣的問題。按IP分組將會呈現兩個剩餘的行,那麼如果我通過電子郵件分組,我不得不擔心保持正確的IP地址匹配才能將其記錄到一條記錄。
目標是獲得一個記錄(畢竟這是一個人)。我們可以通過電子郵件或IP地址(我不想使用名稱)來判斷。我很好,爲任何/所有字段選擇任何非空值(在GROUP BY期間,最小或最大值作爲聚合)。
任何人都可以指向正確的方向嗎?先謝謝你。
Hi @SandPiper,感謝您的快速響應。我每天都會收到大量的線索,並且我試圖在將每條線索插入數據庫之前將線索放到每個線索一個聯繫人。我不一定要存儲IP地址,但它是一條可以用來表示關係的信息。我明白,人們可以擁有相同的知識產權,並且願意犧牲完整的準確性,將記錄降至一個。我甚至想過把IP與第一個名字的第一個字母和姓氏的第一個字母連接起來。 –
您提供的查詢將記錄向下帶到兩條記錄。是否有辦法讓它動態地變成一個?這意味着,當我對Email進行分組時,我必須爲IP地址選擇一個標量值,如果它不是與第二條記錄共享一個值的IP地址,那麼我將無法使用分組依據IP。 –
總有辦法做到這一點,但更好的問題是,你應該怎麼做? Bobby Doe和Robert Doe真的是同一個人嗎?如果是父親和兒子呢?還是兩個兄弟?請花一點時間閱讀以下內容:https://meta.stackexchange.com/questions/66377/what-is-the-xy-problem。在我看來,最好的解決方案是在數據進入系統之前更有效地屏蔽數據。對於已經在那裏的東西,找到唯一的電子郵件(我會賭那裏可能沒有太多重複),並且你有你的聯繫人列表。 – SandPiper