Caspita dopo avere finito di scrivere (con sudore) il codice
faccio per postare e scopro che è ormai troppo tardi
sono stato preceduto 
Comunque con la mia scarsità avrei fatto cosi (avendo letto anche il precedente thread )
( PS, dopo vado a "studiarmi" le proposte di sspintux e badaze )
data questa tabella:
codice:
-- Uso Master
USE [master]
GO
-- Creo un DB
CREATE DATABASE [Test5]
GO
-- Uso il DB appena creato
USE [Test5]
GO
-- Creo una tabella T1 molto semplice senza Key o altro
CREATE TABLE [dbo].[T1]
(
[Azi] [nvarchar](50) NULL,
[Mat] [nvarchar](50) NULL
) ON [PRIMARY]
GO
-- Inserisco i dati in tabella
INSERT [dbo].[T1] ([Azi], [Mat]) VALUES (N'aaa', N'06')
GO
INSERT [dbo].[T1] ([Azi], [Mat]) VALUES (N'aaa', N'02')
GO
INSERT [dbo].[T1] ([Azi], [Mat]) VALUES (N'aaa', N'03')
GO
INSERT [dbo].[T1] ([Azi], [Mat]) VALUES (N'aaa', N'07')
GO
INSERT [dbo].[T1] ([Azi], [Mat]) VALUES (N'aaa', N'05')
GO
INSERT [dbo].[T1] ([Azi], [Mat]) VALUES (N'aaa', N'08')
GO
INSERT [dbo].[T1] ([Azi], [Mat]) VALUES (N'aaa', N'09')
GO
INSERT [dbo].[T1] ([Azi], [Mat]) VALUES (N'bbb', N'20')
GO
INSERT [dbo].[T1] ([Azi], [Mat]) VALUES (N'bbb', N'17')
GO
INSERT [dbo].[T1] ([Azi], [Mat]) VALUES (N'bbb', N'12')
GO
INSERT [dbo].[T1] ([Azi], [Mat]) VALUES (N'bbb', N'18')
GO
INSERT [dbo].[T1] ([Azi], [Mat]) VALUES (N'bbb', N'01')
GO
INSERT [dbo].[T1] ([Azi], [Mat]) VALUES (N'bbb', N'02')
GO
INSERT [dbo].[T1] ([Azi], [Mat]) VALUES (N'ccc', N'22')
GO
INSERT [dbo].[T1] ([Azi], [Mat]) VALUES (N'ccc', N'21')
GO
INSERT [dbo].[T1] ([Azi], [Mat]) VALUES (N'ccc', N'24')
GO
INSERT [dbo].[T1] ([Azi], [Mat]) VALUES (N'ddd', N'02')
GO
INSERT [dbo].[T1] ([Azi], [Mat]) VALUES (N'ddd', N'03')
GO
INSERT [dbo].[T1] ([Azi], [Mat]) VALUES (N'ddd', N'')
GO
INSERT [dbo].[T1] ([Azi], [Mat]) VALUES (N'ddd', N'01')
GO
INSERT [dbo].[T1] ([Azi], [Mat]) VALUES (N'ddd', N'07')
GO
INSERT [dbo].[T1] ([Azi], [Mat]) VALUES (N'ddd', N'08')
GO
INSERT [dbo].[T1] ([Azi], [Mat]) VALUES (N'ddd', N'04')
GO
INSERT [dbo].[T1] ([Azi], [Mat]) VALUES (N'eee', N'02')
GO
INSERT [dbo].[T1] ([Azi], [Mat]) VALUES (N'eee', NULL)
GO
INSERT [dbo].[T1] ([Azi], [Mat]) VALUES (N'eee', N'07')
GO
INSERT [dbo].[T1] ([Azi], [Mat]) VALUES (N'eee', N'01')
GO
INSERT [dbo].[T1] ([Azi], [Mat]) VALUES (N'eee', N'12')
GO
INSERT [dbo].[T1] ([Azi], [Mat]) VALUES (N'eee', N'14')
GO
applico questa query
codice:
-- Uso Test5
USE [Test5]
GO
WITH
Vis1 AS
(
SELECT
Azi, Mat,
ROW_NUMBER() OVER (PARTITION BY Azi ORDER BY Mat) AS RN
FROM dbo.T1
),
Vis2 AS
(
SELECT TOP (100) PERCENT
Azi, Mat, RN
FROM Vis1
WHERE (RN < 5.5)
ORDER BY Azi, Mat
),
Vis3 AS
(
SELECT
Azi,
MAX(CASE WHEN RN = 1 THEN Mat END) AS e1,
MAX(CASE WHEN RN = 2 THEN Mat END) AS e2,
MAX(CASE WHEN RN = 3 THEN Mat END) AS e3,
MAX(CASE WHEN RN = 4 THEN Mat END) AS e4,
MAX(CASE WHEN RN = 5 THEN Mat END) AS e5
FROM Vis2
GROUP BY Azi
),
Vis4 AS
(
SELECT
Azi,
(CASE WHEN (e1 IS NULL) THEN N'' ELSE e1 END) + (CASE WHEN (e2 IS NULL) THEN N'' ELSE (N'/' + e2) END) + (CASE WHEN (e3 IS NULL) THEN N'' ELSE (N'/' + e3) END) + (CASE WHEN (e4 IS NULL) THEN N'' ELSE (N'/' + e4) END) + (CASE WHEN (e5 IS NULL) THEN N'' ELSE (N'/' + e5) END) AS Res
FROM Vis3
)
SELECT * FROM Vis4
Osserva che se al campo "Mat" ( matricola ) hai dei valori NULL oppure stringhe a lunghezza zero questi ti occupano comunque i primi posti dei tuoi 5
Pero concordo con zacca94 quando ti fa notare che sarebbe meglio spostare la query a lato applicazione.
.