合并表并更新包含逗号分隔字符串

时间:2016-12-06 19:41:58

标签: sql sql-server sql-server-2008 sql-merge

我有一个table1选项

  ID  |option  | PreRequisite
 -------------------------------------
   1  | India  | null      
   2  | Japan  | null
   3  | China  | null 
   4  | ABC    | Q1|1,Q2|2
   5  | DEF    | Q1|1
   6  | KLM    | Q1|1

我有另一张桌子2

  Key | ParentOption |ChildOption
 ---------------------------------
   Q1 | INDIA        | EFG
   Q1 | INDIA        | GHI
   Q1 | JAPAN        | ABC
   Q1 | JAPAN        | DEF
   Q1 | INDIA        | KLM

所以我必须合并这两个表,并且table1中不存在子选项,我必须将该子选项与PreRequisite更新一起插入Q1 |"来自表1" 即  for" Q1 |印度| EFG"表1中的新条目应为

ID | option|  PreRequisite
----------------------------
 7 |  EFG   | Q1|1

现在如果childoption已经存在于table1中,我必须将table1中的parentoption的id附加到先决条件列中。

即Q1 | JAPAN | DEF 行应该更新到

ID  |option  | PreRequisite
-------------------------------------
 1  | DEF   | Q1|1|2

为Q1 | JAPAN | ABC 行应该更新到

ID  |option  | PreRequisite
-------------------------------------
4  | ABC    | Q1|1|2,Q2|2

但是对于已经存在于表格中的子选项以及填充了Q1 |" parentOption的id"的先决条件,不应该更新任何内容。

为Q1 |印度| KLM 行应该更新到

ID  |option  | PreRequisite
-------------------------------------
5  | KLM     | Q1|1

所以最终的结果应该是

  ID  |option  | PreRequisite
 -------------------------------------
   1  | India  | null      
   2  | Japan  | null
   3  | China  | null 
   4  | ABC    | Q1|1|2,Q2|2
   5  | DEF    | Q1|1|2
   6  | KLM    | Q1|1
   7  | EFG    | Q1|1
   8  | GHI    | Q1|1

0 个答案:

没有答案