将唯一组ID分配给两列之间的相关值

时间:2016-01-26 11:41:04

标签: c# sql asp.net sql-server excel

我遇到了一个具有挑战性的问题。我正在开发一个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想法如何构建查询以获得此输出或任何其他解决方案? 希望您能理解,随时要求进一步澄清。 谢谢。

0 个答案:

没有答案