AJUDA URGENTE COM SELECT
Srs,
Criei um select para contar a produção, porém o select ficou tão grande de deu erro ao tentar executar.... O que estou precisando é fazer com que minha tabela faça de linhas colunas... (Tipo uma tabela dinâmica)
Segue o select
sSQL = [Ô] SELECT POSTO, (SELECT SUM(ROWCONT) FROM [RELATORIO$] WHERE HOUR(HORAINI) = [ô]22[ô] AND POSTO = [ô]POSTO01[ô]) AS 22,[Ô]
sSQL = sSQL & [Ô] (SELECT SUM(ROWCONT) FROM [RELATORIO$] WHERE HOUR(HORAINI) = [ô]23[ô] AND POSTO = [ô]POSTO01[ô]) AS 23,[Ô]
sSQL = sSQL & [Ô] (SELECT SUM(ROWCONT) FROM [RELATORIO$] WHERE HOUR(HORAINI) = [ô]0[ô] AND POSTO = [ô]POSTO01[ô]) AS 00,[Ô]
sSQL = sSQL & [Ô] (SELECT SUM(ROWCONT) FROM [RELATORIO$] WHERE HOUR(HORAINI) = [ô]1[ô] AND POSTO = [ô]POSTO01[ô]) AS 01,[Ô]
sSQL = sSQL & [Ô] (SELECT SUM(ROWCONT) FROM [RELATORIO$] WHERE HOUR(HORAINI) = [ô]2[ô] AND POSTO = [ô]POSTO01[ô]) AS 02,[Ô]
sSQL = sSQL & [Ô] (SELECT SUM(ROWCONT) FROM [RELATORIO$] WHERE HOUR(HORAINI) = [ô]3[ô] AND POSTO = [ô]POSTO01[ô]) AS 03,[Ô]
sSQL = sSQL & [Ô] (SELECT SUM(ROWCONT) FROM [RELATORIO$] WHERE HOUR(HORAINI) = [ô]4[ô] AND POSTO = [ô]POSTO01[ô]) AS 04,[Ô]
sSQL = sSQL & [Ô] (SELECT SUM(ROWCONT) FROM [RELATORIO$] WHERE HOUR(HORAINI) = [ô]5[ô] AND POSTO = [ô]POSTO01[ô]) AS 05,[Ô]
sSQL = sSQL & [Ô] (SELECT SUM(ROWCONT) FROM [RELATORIO$] WHERE HOUR(HORAINI) = [ô]6[ô] AND POSTO = [ô]POSTO01[ô]) AS 06,[Ô]
sSQL = sSQL & [Ô] (SELECT SUM(ROWCONT) FROM [RELATORIO$] WHERE HOUR(HORAINI) = [ô]7[ô] AND POSTO = [ô]POSTO01[ô]) AS 07,[Ô]
sSQL = sSQL & [Ô] (SELECT SUM(ROWCONT) FROM [RELATORIO$] WHERE HOUR(HORAINI) = [ô]8[ô] AND POSTO = [ô]POSTO01[ô]) AS 08,[Ô]
sSQL = sSQL & [Ô] (SELECT SUM(ROWCONT) FROM [RELATORIO$] WHERE HOUR(HORAINI) = [ô]9[ô] AND POSTO = [ô]POSTO01[ô]) AS 09,[Ô]
sSQL = sSQL & [Ô] (SELECT SUM(ROWCONT) FROM [RELATORIO$] WHERE HOUR(HORAINI) = [ô]10[ô] AND POSTO = [ô]POSTO01[ô]) AS 10,[Ô]
sSQL = sSQL & [Ô] (SELECT SUM(ROWCONT) FROM [RELATORIO$] WHERE HOUR(HORAINI) = [ô]11[ô] AND POSTO = [ô]POSTO01[ô]) AS 11,[Ô]
sSQL = sSQL & [Ô] (SELECT SUM(ROWCONT) FROM [RELATORIO$] WHERE HOUR(HORAINI) = [ô]12[ô] AND POSTO = [ô]POSTO01[ô]) AS 12,[Ô]
sSQL = sSQL & [Ô] (SELECT SUM(ROWCONT) FROM [RELATORIO$] WHERE HOUR(HORAINI) = [ô]13[ô] AND POSTO = [ô]POSTO01[ô]) AS 13,[Ô]
sSQL = sSQL & [Ô] (SELECT SUM(ROWCONT) FROM [RELATORIO$] WHERE HOUR(HORAINI) = [ô]14[ô] AND POSTO = [ô]POSTO01[ô]) AS 14,[Ô]
sSQL = sSQL & [Ô] (SELECT SUM(ROWCONT) FROM [RELATORIO$] WHERE HOUR(HORAINI) = [ô]15[ô] AND POSTO = [ô]POSTO01[ô]) AS 15,[Ô]
sSQL = sSQL & [Ô] (SELECT SUM(ROWCONT) FROM [RELATORIO$] WHERE HOUR(HORAINI) = [ô]16[ô] AND POSTO = [ô]POSTO01[ô]) AS 16,[Ô]
sSQL = sSQL & [Ô] (SELECT SUM(ROWCONT) FROM [RELATORIO$] WHERE HOUR(HORAINI) = [ô]17[ô] AND POSTO = [ô]POSTO01[ô]) AS 17,[Ô]
sSQL = sSQL & [Ô] (SELECT SUM(ROWCONT) FROM [RELATORIO$] WHERE HOUR(HORAINI) = [ô]18[ô] AND POSTO = [ô]POSTO01[ô]) AS 18,[Ô]
sSQL = sSQL & [Ô] (SELECT SUM(ROWCONT) FROM [RELATORIO$] WHERE HOUR(HORAINI) = [ô]19[ô] AND POSTO = [ô]POSTO01[ô]) AS 19,[Ô]
sSQL = sSQL & [Ô] (SELECT SUM(ROWCONT) FROM [RELATORIO$] WHERE HOUR(HORAINI) = [ô]20[ô] AND POSTO = [ô]POSTO01[ô]) AS 20,[Ô]
sSQL = sSQL & [Ô] (SELECT SUM(ROWCONT) FROM [RELATORIO$] WHERE HOUR(HORAINI) = [ô]21[ô] AND POSTO = [ô]POSTO01[ô]) AS 21[Ô]
sSQL = sSQL & [Ô] FROM [RELATORIO$] WHERE POSTO = [ô]POSTO01[ô] GROUP BY POSTO[Ô]
Vou unindo os select[ô]s criando novas linhas... Problema é que tenho quase 30 postos de trabalho, então isso fica gigante e não executa....meu banco é Access(Não tem como mudar)... tentei fazer alguns testes com Pivot mas não funciona...
Alguém tem alguma idéia de como posso fazer isso de alguma outra maneira????
To meio desesperado a procura...
So meio leigo ainda no assunto... Mas estamos ai!
att,
Criei um select para contar a produção, porém o select ficou tão grande de deu erro ao tentar executar.... O que estou precisando é fazer com que minha tabela faça de linhas colunas... (Tipo uma tabela dinâmica)
Segue o select
sSQL = [Ô] SELECT POSTO, (SELECT SUM(ROWCONT) FROM [RELATORIO$] WHERE HOUR(HORAINI) = [ô]22[ô] AND POSTO = [ô]POSTO01[ô]) AS 22,[Ô]
sSQL = sSQL & [Ô] (SELECT SUM(ROWCONT) FROM [RELATORIO$] WHERE HOUR(HORAINI) = [ô]23[ô] AND POSTO = [ô]POSTO01[ô]) AS 23,[Ô]
sSQL = sSQL & [Ô] (SELECT SUM(ROWCONT) FROM [RELATORIO$] WHERE HOUR(HORAINI) = [ô]0[ô] AND POSTO = [ô]POSTO01[ô]) AS 00,[Ô]
sSQL = sSQL & [Ô] (SELECT SUM(ROWCONT) FROM [RELATORIO$] WHERE HOUR(HORAINI) = [ô]1[ô] AND POSTO = [ô]POSTO01[ô]) AS 01,[Ô]
sSQL = sSQL & [Ô] (SELECT SUM(ROWCONT) FROM [RELATORIO$] WHERE HOUR(HORAINI) = [ô]2[ô] AND POSTO = [ô]POSTO01[ô]) AS 02,[Ô]
sSQL = sSQL & [Ô] (SELECT SUM(ROWCONT) FROM [RELATORIO$] WHERE HOUR(HORAINI) = [ô]3[ô] AND POSTO = [ô]POSTO01[ô]) AS 03,[Ô]
sSQL = sSQL & [Ô] (SELECT SUM(ROWCONT) FROM [RELATORIO$] WHERE HOUR(HORAINI) = [ô]4[ô] AND POSTO = [ô]POSTO01[ô]) AS 04,[Ô]
sSQL = sSQL & [Ô] (SELECT SUM(ROWCONT) FROM [RELATORIO$] WHERE HOUR(HORAINI) = [ô]5[ô] AND POSTO = [ô]POSTO01[ô]) AS 05,[Ô]
sSQL = sSQL & [Ô] (SELECT SUM(ROWCONT) FROM [RELATORIO$] WHERE HOUR(HORAINI) = [ô]6[ô] AND POSTO = [ô]POSTO01[ô]) AS 06,[Ô]
sSQL = sSQL & [Ô] (SELECT SUM(ROWCONT) FROM [RELATORIO$] WHERE HOUR(HORAINI) = [ô]7[ô] AND POSTO = [ô]POSTO01[ô]) AS 07,[Ô]
sSQL = sSQL & [Ô] (SELECT SUM(ROWCONT) FROM [RELATORIO$] WHERE HOUR(HORAINI) = [ô]8[ô] AND POSTO = [ô]POSTO01[ô]) AS 08,[Ô]
sSQL = sSQL & [Ô] (SELECT SUM(ROWCONT) FROM [RELATORIO$] WHERE HOUR(HORAINI) = [ô]9[ô] AND POSTO = [ô]POSTO01[ô]) AS 09,[Ô]
sSQL = sSQL & [Ô] (SELECT SUM(ROWCONT) FROM [RELATORIO$] WHERE HOUR(HORAINI) = [ô]10[ô] AND POSTO = [ô]POSTO01[ô]) AS 10,[Ô]
sSQL = sSQL & [Ô] (SELECT SUM(ROWCONT) FROM [RELATORIO$] WHERE HOUR(HORAINI) = [ô]11[ô] AND POSTO = [ô]POSTO01[ô]) AS 11,[Ô]
sSQL = sSQL & [Ô] (SELECT SUM(ROWCONT) FROM [RELATORIO$] WHERE HOUR(HORAINI) = [ô]12[ô] AND POSTO = [ô]POSTO01[ô]) AS 12,[Ô]
sSQL = sSQL & [Ô] (SELECT SUM(ROWCONT) FROM [RELATORIO$] WHERE HOUR(HORAINI) = [ô]13[ô] AND POSTO = [ô]POSTO01[ô]) AS 13,[Ô]
sSQL = sSQL & [Ô] (SELECT SUM(ROWCONT) FROM [RELATORIO$] WHERE HOUR(HORAINI) = [ô]14[ô] AND POSTO = [ô]POSTO01[ô]) AS 14,[Ô]
sSQL = sSQL & [Ô] (SELECT SUM(ROWCONT) FROM [RELATORIO$] WHERE HOUR(HORAINI) = [ô]15[ô] AND POSTO = [ô]POSTO01[ô]) AS 15,[Ô]
sSQL = sSQL & [Ô] (SELECT SUM(ROWCONT) FROM [RELATORIO$] WHERE HOUR(HORAINI) = [ô]16[ô] AND POSTO = [ô]POSTO01[ô]) AS 16,[Ô]
sSQL = sSQL & [Ô] (SELECT SUM(ROWCONT) FROM [RELATORIO$] WHERE HOUR(HORAINI) = [ô]17[ô] AND POSTO = [ô]POSTO01[ô]) AS 17,[Ô]
sSQL = sSQL & [Ô] (SELECT SUM(ROWCONT) FROM [RELATORIO$] WHERE HOUR(HORAINI) = [ô]18[ô] AND POSTO = [ô]POSTO01[ô]) AS 18,[Ô]
sSQL = sSQL & [Ô] (SELECT SUM(ROWCONT) FROM [RELATORIO$] WHERE HOUR(HORAINI) = [ô]19[ô] AND POSTO = [ô]POSTO01[ô]) AS 19,[Ô]
sSQL = sSQL & [Ô] (SELECT SUM(ROWCONT) FROM [RELATORIO$] WHERE HOUR(HORAINI) = [ô]20[ô] AND POSTO = [ô]POSTO01[ô]) AS 20,[Ô]
sSQL = sSQL & [Ô] (SELECT SUM(ROWCONT) FROM [RELATORIO$] WHERE HOUR(HORAINI) = [ô]21[ô] AND POSTO = [ô]POSTO01[ô]) AS 21[Ô]
sSQL = sSQL & [Ô] FROM [RELATORIO$] WHERE POSTO = [ô]POSTO01[ô] GROUP BY POSTO[Ô]
Vou unindo os select[ô]s criando novas linhas... Problema é que tenho quase 30 postos de trabalho, então isso fica gigante e não executa....meu banco é Access(Não tem como mudar)... tentei fazer alguns testes com Pivot mas não funciona...
Alguém tem alguma idéia de como posso fazer isso de alguma outra maneira????
To meio desesperado a procura...
So meio leigo ainda no assunto... Mas estamos ai!
att,
pelo q entendi , este sql aà é do posto01 ....
a pergunta é Relatorio$ 'é uma tabela?
a pergunta é Relatorio$ 'é uma tabela?
PH1959,
é do posto 01 e a tabela é Relatorio$...
é do posto 01 e a tabela é Relatorio$...
beleza e também ficou moleza...
usa um array...
dim listapostostos (npostos, 23) as variant... [ô] substitui npostos pelo numero de postos q vc tiver....
o código abaixo está escrito como se os dados da tabela sejam numericos; se forem strings tem q fazer uma pequena adaptação
for i = 1 to npostos
for j = 0 to 23
if i< 10 then
a= [Ô]POSTO0[Ô] & i
else
a= [Ô]POSTO[Ô] & i
endif
sSQL = [Ô] SELECT POSTO, (SELECT SUM(ROWCONT) FROM [RELATORIO$] WHERE HOUR(HORAINI) =[Ô] & j & [Ô] AND POSTO =[Ô] & a & [Ô])[Ô]
[ô] Agora é só abrir a tabela e jogar os dados no array
listapostos(i,j) = tabela( [Ô]o campo q vc quer[Ô])
depois
next j
next i
usa um array...
dim listapostostos (npostos, 23) as variant... [ô] substitui npostos pelo numero de postos q vc tiver....
o código abaixo está escrito como se os dados da tabela sejam numericos; se forem strings tem q fazer uma pequena adaptação
for i = 1 to npostos
for j = 0 to 23
if i< 10 then
a= [Ô]POSTO0[Ô] & i
else
a= [Ô]POSTO[Ô] & i
endif
sSQL = [Ô] SELECT POSTO, (SELECT SUM(ROWCONT) FROM [RELATORIO$] WHERE HOUR(HORAINI) =[Ô] & j & [Ô] AND POSTO =[Ô] & a & [Ô])[Ô]
[ô] Agora é só abrir a tabela e jogar os dados no array
listapostos(i,j) = tabela( [Ô]o campo q vc quer[Ô])
depois
next j
next i
PH1959...
Cara so meio leigo no assunto, mas vamos lá...
Vou tentar executar o comando acima...
Faço esse select [Ô]gigante[Ô] para gerar um relatótio no data Report... com essa função também consigo? Utilizo o listapostos(ij) como meu recordset(axo que é isso)...
att,
Cara so meio leigo no assunto, mas vamos lá...
Vou tentar executar o comando acima...
Faço esse select [Ô]gigante[Ô] para gerar um relatótio no data Report... com essa função também consigo? Utilizo o listapostos(ij) como meu recordset(axo que é isso)...
att,
Tópico encerrado , respostas não são mais permitidas