我遇到了一个具有挑战性的问题。我正在开发一个Web应用程序(.net(C#)),它接受一个特定的excel文件并导出一个带有下面说明的分隔文件的分隔文件。 以下是要导入的Excel:
Loan_ID |Owner_Id | RelPerson_Id | Loan_Class
------------------------------------------------
L131231 | 1234 | 5678 | 0
L135148 | 2345 | 6789 | 2
L417128 | 1234 | 5432 | 1
L271237 | 5678 | 1112 | 5
L213781 | 2345 | 1113 | 4
L098932 | 1117 | 6789 | 6
L012213 | 1122 | 3311 | 2
L398721 | 2221 | 1112 | 3
L098766 | 5552 | | 1
期望的输出:
Cust_ID | Cust_class | Gr_ID | Gr.Members | Gr_Class
---------------------------------------------------------------------
1234 | 1 | 1 | (1234,5678,5432,1112,2221) | 5
2345 | 4 | 2 | (2345,1117,6789,1113) | 6
5678 | 5 | 1 | (1234,5678,5432,1112,2221) | 5
1117 | 6 | 2 | (2345,1117,6789,1113) | 6
1122 | 2 | 3 | (1122,3311) | 2
6789 | 6 | 2 | (2345,1117,6789,1113) | 6
5432 | 1 | 1 | (1234,5678,5432,1112,2221) | 5
1112 | 5 | 1 | (1234,5678,5432,1112,2221) | 5
1113 | 4 | 2 | (2345,1117,6789,1113) | 6
3311 | 2 | 3 | (1122,3311) | 2
2221 | 3 | 1 | (1234,5678,5432,1112,2221) | 5
5552 | 1 | 4 | (5552) | 4
所以,我将解释这个案例,以便你理解。在excel文件中,第一列代表具有唯一ID的贷款(没有重复),第二列代表贷款的所有者,这是一个id识别客户(Customer_Id)。相关人员的ID也是Customer_Id,它是此贷款中所有者的担保人。客户可能有2个或更多贷款,可以作为2个或更多其他贷款的担保人。担保人可以是2或3笔贷款的担保人,但也可能是另一笔贷款的所有者。因此owner_id和Rel_PersonId可能有重复,而Rel_PersonId可能有空白值。类别列是贷款ID的等级或分类(基于延迟天数)。
从这个文件我想要上面的输出。 Cust_id是将从列,所有者和Rel人员中获取的不同客户ID,并将被分配他所属的贷款的最高级别(Column:Cust_Class)(无论是所有者还是担保人)。我已经找到了解决方案对于输出的前两列,我坚持分组。 分组逻辑:参与一笔贷款的两个客户被组合在一起,但如果这些客户中的任何一个涉及另一个贷款(如所有者或担保人)与另一个Cutomer X,另一个与另一个客户Y,则两个客户都将在前两个组,如果客户 x 或 y 与其他客户 z 和一起参与其他贷款那些也与其他组一起被添加到第一组,并且这个循环继续,直到没有更多的客户与已经在组中的那些客户连接。查看所需的输出以便理解。组ID将自动生成并顺序生成(1,2,3,4)。组类将是具有该组最高Cust_class的客户的类。 我正在使用sql server导入excel.Any想法如何构建查询以获得此输出或任何其他解决方案? 希望您能理解,随时要求进一步澄清。 谢谢。