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

SQL Server

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

Alesp84

Curtidas 0

Respostas

Marcus.magalhaes

Marcus.magalhaes

05/08/2004

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,


GOSTEI 0
Alesp84

Alesp84

05/08/2004

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


GOSTEI 0
Aroldo Zanela

Aroldo Zanela

05/08/2004

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.


GOSTEI 0
Alesp84

Alesp84

05/08/2004

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..


GOSTEI 0
POSTAR