2012-06-07 112 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, '');