Concatenare record in MSSQL (2)

Concatenare Record di una tabella di questo tipo:
> ID NUMERO
> AG120858 33367890
> AG120858 03456789
> FR231267 4535678
> ML190245 980345678
> ML190245 54785678
>
Per ottenere questo risultato procedere con la sintassi
> ID NUMERO
> AG120858 33367890 - 03456789
> FR231267 4535678
> ML190245 980345678 - 54785678

USE tempdb
GO

/* Definisco la tabella dbo.myTable */
CREATE TABLE dbo.myTable(
[ID] char(8) NOT NULL,
Numero varchar(10) NOT NULL
)
GO

/* La popolo */
INSERT dbo.myTable VALUES('AG120858', '33367890')
INSERT dbo.myTable VALUES('AG120858', '03456789')
INSERT dbo.myTable VALUES('FR231267', '4535678')
INSERT dbo.myTable VALUES('ML190245', '980345678')
INSERT dbo.myTable VALUES('ML190245', '54785678')
GO

/* Definisco la UDF dbo.ufn_Concatena */
CREATE FUNCTION dbo.ufn_Concatena(
@ID char(8)
)
RETURNS varchar(100)
BEGIN
DECLARE @Output varchar(100)
SET @Output = ''

SELECT @Output = @Output + Numero + ' - '
FROM dbo.myTable
WHERE [ID] = @ID

RETURN LEFT(@Output, LEN(@Output) - 3)
END
GO

/* Query */
SELECT [ID], dbo.ufn_Concatena([ID]) AS Numero
FROM dbo.myTable
GROUP BY [ID]
GO

/* Output:

ID Numero
-------- ---------------------
AG120858 33367890 - 0345678
FR231267 453567
ML190245 980345678 - 5478567

(3 row(s) affected)

*/

/* Pulizia */
DROP FUNCTION dbo.ufn_Concatena
DROP TABLE dbo.myTable

*Articolo originale :https://groups.google.com/forum/?hl=it&fromgroups#!topic/microsoft.public.it.sql/QVtowIa5dzU *

Back to Top