Dúvida em consulta complicada, não tenho ideia de como
05/08/2004
0
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
Posts
05/08/2004
Marcus.magalhaes
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,
05/08/2004
Alesp84
Mesmo se der, vai usar tanta subquery que nem deve compensa pela performance né..
05/08/2004
Aroldo Zanela
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.
06/08/2004
Alesp84
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..
Clique aqui para fazer login e interagir na Comunidade :)