» Início » Desenvolvimento » Banco de dados e SQL » SQL Server 2005 T-SQL Tips: Concatenando e Agrupando
 
Avaliação: | Publicado em: 05/02/2008
SQL Server 2005 T-SQL Tips: Concatenando e Agrupando


FOR XML PATH

O potencial do XML no SQL Server 2005 permite ainda outras alternativas para a concatenação de valores através de um delimitador. A solução abaixo não é de minha autoria e foi retirada do livro "Inside Microsoft SQL Server: T-SQL Querying". Essa interessante (e extremamente rápida) técnica foi concebia por Michael Rys e Eugene Kogan, profissionais da Microsoft envolvidos no desenvolvimento do produto.

Use Testes;

WITH Telefones (CliCodigo, Telefone)
As
(
SELECT
 CliCodigo,
 TelTipo + ':' + CAST(TelDDD AS CHAR(2)) + '-' +
  LEFT(TelNumero,4) + '-' + RIGHT(TelNumero,4)
FROM
 tblTelefones
),

Contatos
As
(
SELECT CliNome As Cliente,
  STUFF((SELECT ' ; ' + Telefone As [text()]
         FROM Telefones As Tel
         WHERE Tel.CliCodigo = Cli.CliCodigo
         FOR XML PATH('')), 1, 1, '') As Tels
FROM tblClientes As Cli
GROUP BY Cli.CliCodigo, Cli.CliNome)

SELECT
 Cliente, RIGHT(Tels,LEN(Tels) - 2) As Contato
FROM
 Contatos

Inicialmente é feita uma consulta XPath concatenando todos os telefones. Como a consulta XPath utiliza apenas a construção text(), o efeito prático é apenas concatenar os valores. Entre essa concatenação, o delimitador ; é inserido para que os valores fiquem delimitados. O resultado sofre um JOIN com a tabela mais externa (Clientes). Normalmente subqueries de expressão, permitem apenas um único valor, mas a natureza semi-estruturada do XML retornou um único valor (ainda que uma string de vários valores delimitados). A cláusula GROUP By é utilizada apenas para eliminar as repetições já que um único cliente pode ter vários telefones.


Eh massa mais naum consigo instala tem como ajudar ::?? Pelo Amor de Deus MAIS SERIO Mermu ajuda aeee Se Pode=D

Fica Com Deus