2012-06-07 154 views
0

我有以下查詢:從SQL查詢生成字符串

SELECT ChallanNo+'-'+CONVERT(VARCHAR(12),ChallanDate,106) 
    FROM Challan WHERE ChallanID IN 
    (SELECT ChallanID FROM ChallanDetail WHERE PTUID=42192) 

這個查詢的結果將是:

151468-29 May 2012 
151591-31 May 2012 

現在我需要一個像這樣的字符串:

151468-29 May 2012, 151591-31 May 2012 

感謝迴應

+0

我認爲這是針對SQL Server的? –

+0

輸出是你想要從SQL產生還是可以通過編程來完成? – nageeb

+0

[在Transact-SQL中連接行值](http://www.simple-talk.com/sql/t-sql-programming/concatenating-row-values-in-transact-sql/) –

回答

1
declare @result varchar(max) = '' 

select @result = @result + ChallanNo + '-' + 
       CONVERT(VARCHAR(12),ChallanDate,106) + ',' 
from ... 

-- remove trailing , 
select left(@result, len(@result) - 1) 
+1

FWIW'STUFF'與前導逗號相比,使用'LEFT'來處理尾隨逗號更有效。爲什麼?那麼,你不必計算一個長度。 :-)在這種情況下,它是微不足道的,但在一個更大的數據集,這是很多額外的週期沒有。 –

2
SELECT STUFF((SELECT ', ' + CONVERT(VARCHAR(32), ChallanNo) 
    + '-' + CONVERT(CHAR(11), ChallanDate, 106) 
    FROM dbo.Challan WHERE ChallanID IN 
    (SELECT ChallanID FROM dbo.ChallanDetail WHERE PTUID = 42192) 
FOR XML PATH('')), 1, 2, '');