2015-02-08 121 views
0

我想在SQL Server的单列中添加多个UCId。我正在使用Stuff,但结果显示所有UC ID而不是条件。想要在由逗号分隔的SQL表的列中插入多个值,

表:

UCId UCPre       UCPost       UCNext (No column name) 
----------------------------------------------------------------------------------------------- 
UC01 User must be Registerd   User is Loggined sucessfully UC02 UC03,UC05,UC02 
UC02 User is Loggined sucessfully User is added     UC03 UC03,UC05,UC02 
UC03 File must be selected   File is added     NULL UC03,UC05,UC02 
UC04 File is added     File is deleted     NULL UC03,UC05,UC02 
UC05 User is Loggined sucessfully User is deleted     NULL UC03,UC05,UC02 

我使用下面的查询:

SELECT 
    b.*, 
    STUFF(
      (SELECT ',' + a.UCId 
      FROM UCDetails a, test b 
      WHERE (b.UCPost = a.UCPre) 
      FOR XML PATH ('')),1,1,'') 
FROM 
    test b 
JOIN 
    UCDetails a ON b.UCPost = a.UCPre 

我想要什么:

我想在UCO 2和UC05的UC01 Id的UCNext列由逗号分隔( UC02,UC05),因为UC01的UCPost与UC02和UC05的UCPre匹配。

+0

对于给定的数据,你能发布每个'UCid'的新列值应该是什么吗? – gotqn 2015-02-08 10:58:46

+0

尊敬的UC01,UCNext的UCCI值为UC02和UC05 – 2015-02-08 11:37:50

+1

[踢坏的习惯:使用旧式JOIN](http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/08/bad -habits-to-kick-using-old-style-joins.aspx) - 在ANSI-** 92中,旧式*逗号分隔的表*样式列表被替换为* proper * ANSI'JOIN'语法** SQL标准(**超过20年**之前)并且不鼓励使用 – 2015-02-08 12:25:03

回答

0

创建第三个表,可能叫NextUCId有两列:

UCID和UCNext

同样UCID将列出每进行一次NextUCId这样的:

UCId | UCNext 
UC01 | UC02 
UC01 | UC03 

然后你可以在第三张桌面上加入以获得您需要的UCId的UCNext ID,如下所示:

SELECT  uc.UCId, 
      nuc.UCNext 
FROM  UCId uc 
INNER JOIN NextUCId nuc ON (uc.UCId = nuc.UCNext) 
ORDER BY nuc.UCNext ASC 
+0

亲爱的谢谢,但我必须在UCPost和UCPre的基础上在UCNext列中输入UCId – 2015-02-08 13:45:41