2015-04-12 43 views
0

我正在使用STUFF命令從列中拉入數據並將它們連接在一起成爲一個單元格。使用For XML Path的STUFF命令的格式化結果將信息連接到一個單元格中

STUFF((Select CAST(v.ID as VARCHAR)+ ', ' 

From Source 

Where CriteriaIsMet 
For XML Path('')),1,0,'') as MonitorID 

我試圖完成的是格式化結果在最後。上述代碼的結果如下所示:

12345, 23456, 34567, 456789, 

我在尋找有分行符的代碼。我想他們都仍然在同一個小區,而不是破了,但擺在Excel中的時候,我希望能有這樣的是結果:

12345, 
23456, 
34567, 
45678, 

我已經嘗試使用:

STUFF((Select REPLACE(CAST v.ID as VARCHAR) + ', ' , ', ', +CHAR(13)) 

然而因爲我結束了這個最終的結果不給我我所期待:

123456
234567&#x0D 

我相信我需要在聲明的結尾做一些事情來做到這一點,但是,我不知道如何完成這是因爲我正在使用:

For XML Path('')),1,0,'') 

我希望有人可能有一個簡單的解決方案。我將不勝感激任何幫助。請注意我正在嘗試將數據保存在同一個單元格中。此數據拉的最終結果將進入Excel中的數據透視表,我希望數字垂直顯示而不是水平顯示。當水平顯示時,在傳遞單元格長度後切斷數字。

回答

0

嘗試......

SELECT STUFF((Select CAST(v.ID as VARCHAR(30)) + + ', '+ CHAR(10) 
     From Source 
     Where CriteriaIsMet 
     For XML Path(''),TYPE) 
     .value('.','NVARCHAR(MAX)'),1,0,'') as MonitorID 
+0

您還需要串聯'+ CHAR(13)+ CHAR(13)'(或字符串字面相同)來表達,以便返回@Xoduszero請求的結果。 –

+0

數據仍然是水平格式「12345,23456,34567,45678」 – Xoduszero

+0

你會如何把它放在那裏丹?因爲我已經試過了Char 13,並且我最終得到了這個奇怪的結果123456 234567&#x0D – Xoduszero

0

而不是增加CHAR(13)和/或CHAR(10)CHAR(9)水平TAB爲我工作的。完整的STUFF參數和其他可能的大型文本字段也應該CASTED爲varchar(255)

應該是這樣的:SELECT CAST(STUFF((...) + CHAR(9) as varchar(255)) as MonitorID

相關問題