Dúvida em consulta complicada, não tenho ideia de como

05/08/2004

Boa noite pessoal

Tenho 2tabelas simples relacionadas bunitinhas(script abaixo)..

Gostaria de saber como eu poderia fazer ou como vocês fariam uma consulta para exibir os dados dessas tabelas da seguinte forma:

Nom_Cli - End_Cli - Data1 - Data2 - Data3 - Data4 - Data5 - Valor1 - Valor2 - Valor3 - Valor4 - Valor5

Sendo Data1...DataN, onde N fosse o maior número historicos encontrados por um cliente..

CREATE TABLE Cliente(
  ID_Cliint Primary Key,
  Nom_Clichar(30) NOT NULL,
  End_Clichar(30)  
)
INSERT INTO Cliente VALUES (1,´Alexandre´,´Rua 1, N 1´)
INSERT INTO Cliente VALUES (2,´Roberto´,´Rua Que sobe, N 0´)
INSERT INTO Cliente VALUES (3,´Márcia´,´Av Paulista, N 1111´)

CREATE TABLE Historico(
  ID_Histint Primary Key,
  ID_Cliint NOT NULL,
  Datadatetime,
  Valordecimal(10,2),
  Constraint FK_Historico Foreign Key (ID_Cli) References Cliente(ID_Cli)
)
INSERT INTO Historico VALUES (1,1,´08/05/2004´,40.00)
INSERT INTO Historico VALUES (2,1,´08/05/2004´,15.00)
INSERT INTO Historico VALUES (3,1,´08/05/2004´,23.10)
INSERT INTO Historico VALUES (4,1,´08/05/2004´,20.01)
INSERT INTO Historico VALUES (5,1,´08/05/2004´,25.00)
INSERT INTO Historico VALUES (6,2,´08/05/2004´,100.00)
INSERT INTO Historico VALUES (7,2,´08/05/2004´,500.50)
INSERT INTO Historico VALUES (8,2,´08/05/2004´,1.00)
INSERT INTO Historico VALUES (9,2,´08/05/2004´,5.00)
INSERT INTO Historico VALUES (10,2,´08/05/2004´,15.00)
INSERT INTO Historico VALUES (11,3,´08/05/2004´,20.00)
INSERT INTO Historico VALUES (12,3,´08/05/2004´,0.10)
INSERT INTO Historico VALUES (13,3,´08/05/2004´,1.99)
INSERT INTO Historico VALUES (14,3,´08/05/2004´,2.30)
INSERT INTO Historico VALUES (15,3,´08/05/2004´,1500.00)

SELECT C.Nom_Cli, C.End_Cli, H.Data, H.Valor
FROM Cliente C JOIN Historico H ON H.ID_cli = C.ID_Cli



Alesp84

Respostas

05/08/2004

Marcus.magalhaes

Boa noite Ale,

Vc quer q o SQL retorne os dados como se fosse uma planilha (lado a lado), não tem como, pelo menos q eu saiba, isso vc só conseguira tratar na aplicação, que é seu front end.

Att,


Responder Citar

05/08/2004

Alesp84

Droga, eu tinha esperança que desse para fazer :(
Mesmo se der, vai usar tanta subquery que nem deve compensa pela performance né..


Responder Citar

05/08/2004

Aroldo Zanela

Colega,

Sim é possível fazer utilizando Transact-SQL, mas realmente a performance vai ser bastante degradada. Ao meu ver, a melhor opção seria utilizar o Crystal Reports para obter o resultado desejado com uma performance aceitável.
Como o assunto é bem propagado na Web, basta você procurar por ´crosstab sql server´ no google que retorna muitas fontes.


Responder Citar

06/08/2004

Alesp84

O intuito final é gerar um arquivo texto para uma gráfica..
Eu faço no front-end isso, mas seria mais pratica se os dados viessem ja do sql formatado :D seria uma mão na roda..
Mas vou me informar sobre crosstab

Valeu..


Responder Citar