我在SQL Server 2014的兩個表:避免笛卡爾乘積檢查對
- 表A包含三列:第一組,PROC和日期
- 表B包含四列:過程Proc1,PROC2,開始,結束
表B是如果組中的最小日期在Start和End之間,則不應出現在表A的同一組中的Procs對的列表。我試圖找到表A中違反此規則的組,但問題是表A有60M組,每組最多有100行,表B有65000對。
其他DEETS:
- 結束可以是NULL
- 過程Proc1和PROC2總是長度5個字符,但PROC可以是任意長度
我的策略是
對於A中的每個組,獲取最小日期和東西Proc的所有唯一值,用逗號分隔(該字段從不包含逗號)到Procs的新字段。用組MinDate Procs產生表C。 (i)開始和結束之間的MinDate(或>開始和結束爲NULL)和(ii)如果我替換Proc1和Proc2的實例,則Procs的長度減少10在它內部是空字符串。
該過程適用於(在數據的子集上),但我正在尋找如何將其擴展到完整數據集的建議。
請讓我知道,如果你想任何其他細節。謝謝!
請** [編輯] **您的問題,並添加一些樣本數據和基於該數據的預期輸出。 [**格式化文本**](http://stackoverflow.com/help/formatting)請,[無屏幕截圖](http://meta.stackoverflow.com/questions/285551/why-may-i-not -upload圖像-的代碼上那麼當-要價-A-問題/ 285557#285557) –