SQL SERVER STUFF功能增量计数器

时间:2015-11-26 11:20:55

标签: sql sql-server sql-server-2008 sql-server-2005

我想在此查询中添加计数器任何想法?

SELECT 
STUFF((
    SELECT ' , vol' + counter +' : ' + t2.ViaLocValue  
    FROM Book_ViaLocat t2
    WHERE t2.BookId = t1.BookId
    FOR XML PATH (''))
  ,1,2,'') AS Names
FROM Book_ViaLocat t1
WHERE t1.BookId = '167698'
GROUP BY t1.BookId;
结果是这样的     第1卷:java2,第2卷:java3,第3卷:java4

2 个答案:

答案 0 :(得分:1)

使用ROW_NUMBER():

SELECT 
STUFF((
    SELECT ' ,vol' + CAST(ROW_NUMBER() OVER (ORDER BY t2.ViaLocValue) AS VARCHAR(4))+
           ' : ' + t2.ViaLocValue  
    FROM Booking_ViaLocat t2
    WHERE t2.BookingId = t1.BookId
    FOR XML PATH (''))
  ,1,2,'') AS Names
FROM Booking_ViaLocat t1
WHERE t1.BookId = '167698'
GROUP BY t1.BookId;

答案 1 :(得分:0)

可以使用" ROW_NUMBER()",你可以根据你的愿望对你的表值进行排序(如果你愿意,可以在roder上更改它)。 请按照以下代码:)

SELECT 
STUFF((
    SELECT ' ,vol' + ROW_NUMBER() OVER(ORDER BY t1.BookId asc) AS Row +' : ' + t2.ViaLocValue  
    FROM Booking_ViaLocat t2
    WHERE t2.BookingId = t1.BookId
    FOR XML PATH (''))
  ,1,2,'') AS Names
FROM Booking_ViaLocat t1
WHERE t1.BookId = '167698'
GROUP BY t1.BookId;