2015-02-08 119 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