Torna al Thread
USE tempdb;
CREATE TABLE dbo.TB_DATI(
COD_CLIENTE int NOT NULL,
NOMINATIVO varchar(12) NOT NULL,
INDIRIZZO varchar(10) NOT NULL,
CONSTRAINT PK_DATI PRIMARY KEY (COD_CLIENTE)
);
CREATE TABLE dbo.TB_TELEFONO(
COD_CLIENTE int NOT NULL,
TIPO_TEL char(2) NOT NULL,
PREF_STATO varchar(5) NOT NULL,
PREFISSO varchar(5) NOT NULL,
NUMERO varchar(10) NOT NULL,
CONSTRAINT PK_TELEFONO PRIMARY KEY (COD_CLIENTE, TIPO_TEL),
CONSTRAINT FK_TELEFONO_DATI FOREIGN KEY(COD_CLIENTE)
REFERENCES dbo.TB_DATI(COD_CLIENTE)
);
INSERT dbo.TB_DATI VALUES (1, 'nominativo1','indirizzo1');
INSERT dbo.TB_DATI VALUES (2, 'nominativo2','indirizzo2');
INSERT dbo.TB_DATI VALUES (3, 'nominativo3','indirizzo3');
INSERT dbo.TB_TELEFONO VALUES (1, 'CE','0039','123','123456');
INSERT dbo.TB_TELEFONO VALUES (1, 'CA','0039','0522','123456');
INSERT dbo.TB_TELEFONO VALUES (1, 'LA','0039','0522','234567');
INSERT dbo.TB_TELEFONO VALUES (2, 'CE','0039','123','1234555');
INSERT dbo.TB_TELEFONO VALUES (2, 'CA','0039','059','123456');
SELECT
COD_CLIENTE
, NOMINATIVO
, INDIRIZZO
, STUFF(
(
SELECT ';' + CAST(TIPO_TEL + PREF_STATO + PREFISSO + NUMERO AS VARCHAR(MAX)) AS [text()]
FROM dbo.TB_TELEFONO AS T
WHERE T.COD_CLIENTE = D.COD_CLIENTE
FOR XML PATH('')
), 1, 1, '') AS NumeriTelefono
FROM dbo.TB_DATI AS D;
/* Output:
COD_CLIENTE NOMINATIVO INDIRIZZO NumeriTelefono
----------- ------------ ---------- --------------------------------------------------
1 nominativo1 indirizzo1 CA00390522123456;CE0039123123456;LA00390522234567
2 nominativo2 indirizzo2 CA0039059123456;CE00391231234555
3 nominativo3 indirizzo3 NULL
(3 row(s) affected)
*/
DROP TABLE dbo.TB_TELEFONO, dbo.TB_DATI;