Tom Cooper
3/19/2007 11:09:00 PM
How about
SELECT CategoryId,
MAX( CASE seq WHEN 1 THEN ProductName ELSE '' END ) +
MAX( CASE seq WHEN 2 THEN ' / ' + ProductName ELSE '' END ) +
MAX( CASE seq WHEN 3 THEN ' / ' + ProductName ELSE '' END ) +
MAX( CASE seq WHEN 4 THEN ' / ' + ProductName ELSE '' END ) +
MAX( CASE seq WHEN 5 THEN ' / ' + ProductName ELSE '' END ) +
MAX( CASE seq WHEN 6 THEN ' / ' + ProductName ELSE '' END ) +
MAX( CASE seq WHEN 7 THEN ' / ' + ProductName ELSE '' END )
FROM ( SELECT p1.CategoryId, p1.ProductName,
( SELECT COUNT(*)
FROM Northwind.dbo.Products p2
WHERE p2.CategoryId = p1.CategoryId
AND p2.ProductName <= p1.ProductName )
FROM Northwind.dbo.Products p1
) D ( CategoryId, ProductName, seq )
GROUP BY CategoryId
Tom
"Mike D." <nospammagepofavor@ohyeah.com> wrote in message
news:eE8UglnaHHA.4000@TK2MSFTNGP02.phx.gbl...
> Hi All,
>
> I know the 'Concatenating row values' question has been asked a million
> times, however I have not seen how to make a slight adjustment to the
> results.
>
> If I run the query below on Northwind, rows 6 and 7 have trailing
> delimiters. Usually I would handle this in the asp.net code but I'm
> working with a OR mapping tool that is really 'black box' to me. I need
> to get everything encapsulated in a SQL view and all will be well.
>
> Please show me what SQL function can handle this!
>
> SELECT CategoryId,
> MAX( CASE seq WHEN 1 THEN ProductName ELSE '' END ) + ' / ' +
> MAX( CASE seq WHEN 2 THEN ProductName ELSE '' END ) + ' / ' +
> MAX( CASE seq WHEN 3 THEN ProductName ELSE '' END ) + ' / ' +
> MAX( CASE seq WHEN 4 THEN ProductName ELSE '' END ) + ' / ' +
> MAX( CASE seq WHEN 5 THEN ProductName ELSE '' END ) + ' / ' +
> MAX( CASE seq WHEN 6 THEN ProductName ELSE '' END ) + ' / ' +
> MAX( CASE seq WHEN 7 THEN ProductName ELSE '' END )
> FROM ( SELECT p1.CategoryId, p1.ProductName,
> ( SELECT COUNT(*)
> FROM Northwind.dbo.Products p2
> WHERE p2.CategoryId = p1.CategoryId
> AND p2.ProductName <= p1.ProductName )
> FROM Northwind.dbo.Products p1
> ) D ( CategoryId, ProductName, seq )
> GROUP BY CategoryId
>
> TIA!
> Mike D.
>