select para copiar campos da mesma tabela

SQL Server

20/01/2016

ola, preciso fazer um update numa tabela, conforme uma condição:
o sistema que uso nao tem função para isso (via programa), e preciso destas informações....

tabela: PCTABPR
campos a serem copiados: PERDESCMAX, PERDESCMAXTAB
campos chave: CODPROD, NUMREGIAO,

preciso copiar os 2 campos PERDESCMAX, PERDESCMAXTAB, para todos os CODPROD, da NUMREGIAO =1 para NUMREGIAO = 7

regiao de origem = 1 e região de destino = 7.

alguem consegue me ajudar?

Juliana.
Juliana

Juliana

Curtidas 0

Respostas

Jair N.

Jair N.

20/01/2016

UPDATE pctabpr a
SET perdescmax = b.perdescmax
, perdescmaxtab = b.perdescmaxtab
FROM pctabpr b
WHERE (b.codprod = a.codprod)
AND (b.numreg = a.numreg + 6)
-- ou
AND (a.numreg = 7)
AND (b.numreg = 1)
GOSTEI 0
Juliana

Juliana

20/01/2016

Ola,
fiz este comando

UPDATE PCTABPR a
SET perdescmax = b.perdescmax
, perdescmaxtab = b.perdescmaxtab
FROM PCTABPR b
WHERE (b.CODPROD = 212) AND (a.CODPROD = 212)
AND (a.numreg = 7)
AND (b.numreg = 1);

só que coloquei um codigo de produto pra fazer um teste.... e deu este erro
ORA-00933 SQL COMMAND NOT PROPERLY ENDED

o que sera que esta errado?
GOSTEI 0
Camilo Silva

Camilo Silva

20/01/2016

Como é a estrutura completa dessa sua tabela?
GOSTEI 0
Juliana

Juliana

20/01/2016

PCTABPR,


chave CODPROD,
chave NUMREGIAO,
PTABELA,
PVENDA,
PERDESCMAX,
PERDESCMAXTAB,
POFERTA,
POFERTATAB,
MARGEM,
DTULTALTPVENDA,
EXCLUIDO,
PTABELA1,
PTABELA2,
PTABELA3,
PTABELA4,
PTABELA5,
PTABELA6,
PTABELA7,
PVENDA1,
PVENDA2,
PVENDA3,
PVENDA4,
PVENDA5,
PVENDA6,
PVENDA7,
CODST,
MARGEM_ESP,
PFRETE,
TABELAEMITIDA,
PERDESCMAXESP,
PERDESCAUTOR,
COTAITEM,
QTDESCAUTOR,
POFERTAAUX,
PERDESCAUTORTAB,
COTAITEMTAB,
QTDESCAUTORTAB,
PERDESCMAXBALCAO,
PERDESCMAXTABBALCAO,
PRECOMINIMOTABELA,
PRECOMINIMOVENDA,
PERDESCFOB,
PTABELAMED,
PVENDAMED,
PTABELAMED1,
PTABELAMED2,
PTABELAMED3,
PTABELAMED4,
PTABELAMED5,
PTABELAMED6,
PTABELAMED7,
PVENDAMED1,
PVENDAMED2,
PVENDAMED3,
PVENDAMED4,
PVENDAMED5,
PVENDAMED6,
PVENDAMED7,
DESCONTAFRETE,
DTINICIOPTABELA,
PTABELAFUTURO,
DTULTALTPTABELAFUTURO,
DTULTALTPTABELA,
PCOMREP1,
PCOMREP2,
PCOMREP3,
PERCACRESCIMOFRETE,
DTEMISSAOETIQ,
NUMSEQATU,
PRECOFAB,
ATUALIZAR,
PTABELAATAC,
PTABELAATAC1,
PTABELAATAC2,
PTABELAATAC3,
PTABELAATAC4,
PTABELAATAC5,
PTABELAATAC6,
PTABELAATAC7,
PVENDAATAC,
PVENDAATAC1,
PVENDAATAC2,
PVENDAATAC3,
PVENDAATAC4,
PVENDAATAC5,
PVENDAATAC6,
PVENDAATAC7,
PRECOANTERIORATAC,
VLACRESFRETEKG,
DTINICIOVALIDADE,
DTFIMVALIDADE,
INDICEPRECO,
DTIMPORTINTEGRACAO,
PERCIPIVENDATAB,
VLPAUTAIPIVENDATAB,
VLIPIPORKGVENDATAB,
PRECOMAXCONSUM,
DTULTATUPVENDA,
DTULTALTERSRVPRC,
PRECOMAXCONSUMTAB,
PERCDESCSIMPLESNAC,
VLSTTAB,
VLST,
CODTRIBPISCOFINS,
PRECOREVISTA,
DTVALPREVISTA,
OBS,
ROTINA,
MATRICULA,
PERDESCMAXIDEALTAB,
PERDESCMAXPOSSIVELTAB,
PERCCOMGARANTIDATAB,
PERDESCMAXAVISTATAB,
PERDESCMAXIDEAL,
PERCCOMGARANTIDA,
PERDESCMAXAVISTA,
PERDESCMAXPOSSIVEL,
VLIPITAB,
VLIPI,
PERCCOM,
CUSTOPRECIFIC,
CUSTOPRECIFICTAB,
VLULTENTMES,
PTABELASEMIMPOSTO1,
PTABELASEMIMPOSTO2,
PTABELASEMIMPOSTO3,
PTABELASEMIMPOSTO4,
PTABELASEMIMPOSTO5,
PTABELASEMIMPOSTO6,
PTABELASEMIMPOSTO7,
PVENDASEMIMPOSTO1,
PVENDASEMIMPOSTO2,
PVENDASEMIMPOSTO3,
PVENDASEMIMPOSTO4,
PVENDASEMIMPOSTO5,
PVENDASEMIMPOSTO6,
PVENDASEMIMPOSTO7,
PTABELAATACSEMIMPOSTO1,
PTABELAATACSEMIMPOSTO2,
PTABELAATACSEMIMPOSTO3,
PTABELAATACSEMIMPOSTO4,
PTABELAATACSEMIMPOSTO5,
PTABELAATACSEMIMPOSTO6,
PTABELAATACSEMIMPOSTO7,
PVENDAATACSEMIMPOSTO1,
PVENDAATACSEMIMPOSTO2,
PVENDAATACSEMIMPOSTO3,
PVENDAATACSEMIMPOSTO4,
PVENDAATACSEMIMPOSTO5,
PVENDAATACSEMIMPOSTO6,
UTILIZARIOLOG,
PVENDAATACSEMIMPOSTO7
GOSTEI 0
Juliana

Juliana

20/01/2016

[img]http://arquivo.devmedia.com.br/forum/imagem/471382-20160122-091351.png[/img]


CREATE TABLE PONTOALTO.PCTABPR
(
CODPROD NUMBER (6) DEFAULT NULL NOT NULL,
NUMREGIAO NUMBER (4) DEFAULT NULL NOT NULL,
PTABELA NUMBER (18,6),
PVENDA NUMBER (18,6),
PERDESCMAX NUMBER (10,2),
PERDESCMAXTAB NUMBER (10,2),
POFERTA NUMBER (12,3),
POFERTATAB NUMBER (12,3),
MARGEM NUMBER (6,2),
DTULTALTPVENDA DATE,
EXCLUIDO VARCHAR2 (1),
PTABELA1 NUMBER (18,6),
PTABELA2 NUMBER (18,6),
PTABELA3 NUMBER (18,6),
PTABELA4 NUMBER (18,6),
PTABELA5 NUMBER (18,6),
PTABELA6 NUMBER (18,6),
PTABELA7 NUMBER (18,6),
PVENDA1 NUMBER (18,6),
PVENDA2 NUMBER (18,6),
PVENDA3 NUMBER (18,6),
PVENDA4 NUMBER (18,6),
PVENDA5 NUMBER (18,6),
PVENDA6 NUMBER (18,6),
PVENDA7 NUMBER (18,6),
CODST NUMBER (4),
MARGEM_ESP NUMBER (6,2),
PFRETE NUMBER (10,4),
TABELAEMITIDA VARCHAR2 (1),
PERDESCMAXESP NUMBER (6,3),
PERDESCAUTOR NUMBER (6,3),
COTAITEM NUMBER (6),
QTDESCAUTOR NUMBER (6) DEFAULT 0,
POFERTAAUX NUMBER (12,3),
PERDESCAUTORTAB NUMBER (6,3),
COTAITEMTAB NUMBER (6),
QTDESCAUTORTAB NUMBER (6) DEFAULT 0,
PERDESCMAXBALCAO NUMBER (10,2),
PERDESCMAXTABBALCAO NUMBER (10,2),
PRECOMINIMOTABELA NUMBER (12,3),
PRECOMINIMOVENDA NUMBER (12,3),
PERDESCFOB NUMBER (5,2),
PTABELAMED NUMBER (12,3),
PVENDAMED NUMBER (12,3),
PTABELAMED1 NUMBER (12,3),
PTABELAMED2 NUMBER (12,3),
PTABELAMED3 NUMBER (12,3),
PTABELAMED4 NUMBER (12,3),
PTABELAMED5 NUMBER (12,3),
PTABELAMED6 NUMBER (12,3),
PTABELAMED7 NUMBER (12,3),
PVENDAMED1 NUMBER (12,3),
PVENDAMED2 NUMBER (12,3),
PVENDAMED3 NUMBER (12,3),
PVENDAMED4 NUMBER (12,3),
PVENDAMED5 NUMBER (12,3),
PVENDAMED6 NUMBER (12,3),
PVENDAMED7 NUMBER (12,3),
DESCONTAFRETE VARCHAR2 (1) DEFAULT 'N',
DTINICIOPTABELA DATE,
PTABELAFUTURO NUMBER (12,3),
DTULTALTPTABELAFUTURO DATE,
DTULTALTPTABELA DATE,
PCOMREP1 NUMBER (6,2),
PCOMREP2 NUMBER (6,2),
PCOMREP3 NUMBER (6,2),
PERCACRESCIMOFRETE NUMBER (8,2),
DTEMISSAOETIQ DATE,
NUMSEQATU NUMBER,
PRECOFAB NUMBER (18,6),
ATUALIZAR VARCHAR2 (1) DEFAULT 'S',
PTABELAATAC NUMBER (18,6),
PTABELAATAC1 NUMBER (18,6),
PTABELAATAC2 NUMBER (18,6),
PTABELAATAC3 NUMBER (18,6),
PTABELAATAC4 NUMBER (18,6),
PTABELAATAC5 NUMBER (18,6),
PTABELAATAC6 NUMBER (18,6),
PTABELAATAC7 NUMBER (18,6),
PVENDAATAC NUMBER (18,6),
PVENDAATAC1 NUMBER (18,6),
PVENDAATAC2 NUMBER (18,6),
PVENDAATAC3 NUMBER (18,6),
PVENDAATAC4 NUMBER (18,6),
PVENDAATAC5 NUMBER (18,6),
PVENDAATAC6 NUMBER (18,6),
PVENDAATAC7 NUMBER (18,6),
PRECOANTERIORATAC NUMBER (18,6),
VLACRESFRETEKG NUMBER (12,6),
DTINICIOVALIDADE DATE,
DTFIMVALIDADE DATE,
INDICEPRECO NUMBER (12,8) DEFAULT 1,
DTIMPORTINTEGRACAO DATE,
PERCIPIVENDATAB NUMBER (18,6),
VLPAUTAIPIVENDATAB NUMBER (18,6),
VLIPIPORKGVENDATAB NUMBER (18,6),
PRECOMAXCONSUM NUMBER (18,6),
DTULTATUPVENDA DATE,
DTULTALTERSRVPRC DATE,
PRECOMAXCONSUMTAB NUMBER (18,6) DEFAULT 0,
PERCDESCSIMPLESNAC NUMBER (18,6),
VLSTTAB NUMBER (18,6),
VLST NUMBER (18,6),
CODTRIBPISCOFINS NUMBER (4),
PRECOREVISTA NUMBER (18,6) DEFAULT NULL,
DTVALPREVISTA DATE DEFAULT NULL,
OBS VARCHAR2 (80),
ROTINA VARCHAR2 (40),
MATRICULA NUMBER (8),
PERDESCMAXIDEALTAB NUMBER (10,2),
PERDESCMAXPOSSIVELTAB NUMBER (10,2),
PERCCOMGARANTIDATAB NUMBER (10,2),
PERDESCMAXAVISTATAB NUMBER (10,2),
PERDESCMAXIDEAL NUMBER (10,2),
PERCCOMGARANTIDA NUMBER (10,2),
PERDESCMAXAVISTA NUMBER (10,2),
PERDESCMAXPOSSIVEL NUMBER (10,2),
VLIPITAB NUMBER (18,6),
VLIPI NUMBER (18,6),
PERCCOM NUMBER (10,2),
CUSTOPRECIFIC NUMBER (18,6),
CUSTOPRECIFICTAB NUMBER (18,6),
VLULTENTMES NUMBER (18,6),
PTABELASEMIMPOSTO1 NUMBER (18,6),
PTABELASEMIMPOSTO2 NUMBER (18,6),
PTABELASEMIMPOSTO3 NUMBER (18,6),
PTABELASEMIMPOSTO4 NUMBER (18,6),
PTABELASEMIMPOSTO5 NUMBER (18,6),
PTABELASEMIMPOSTO6 NUMBER (18,6),
PTABELASEMIMPOSTO7 NUMBER (18,6),
PVENDASEMIMPOSTO1 NUMBER (18,6),
PVENDASEMIMPOSTO2 NUMBER (18,6),
PVENDASEMIMPOSTO3 NUMBER (18,6),
PVENDASEMIMPOSTO4 NUMBER (18,6),
PVENDASEMIMPOSTO5 NUMBER (18,6),
PVENDASEMIMPOSTO6 NUMBER (18,6),
PVENDASEMIMPOSTO7 NUMBER (18,6),
PTABELAATACSEMIMPOSTO1 NUMBER (18,6),
PTABELAATACSEMIMPOSTO2 NUMBER (18,6),
PTABELAATACSEMIMPOSTO3 NUMBER (18,6),
PTABELAATACSEMIMPOSTO4 NUMBER (18,6),
PTABELAATACSEMIMPOSTO5 NUMBER (18,6),
PTABELAATACSEMIMPOSTO6 NUMBER (18,6),
PTABELAATACSEMIMPOSTO7 NUMBER (18,6),
PVENDAATACSEMIMPOSTO1 NUMBER (18,6),
PVENDAATACSEMIMPOSTO2 NUMBER (18,6),
PVENDAATACSEMIMPOSTO3 NUMBER (18,6),
PVENDAATACSEMIMPOSTO4 NUMBER (18,6),
PVENDAATACSEMIMPOSTO5 NUMBER (18,6),
PVENDAATACSEMIMPOSTO6 NUMBER (18,6),
UTILIZARIOLOG VARCHAR2 (1) DEFAULT 'N',
PVENDAATACSEMIMPOSTO7 NUMBER (18,6),
CONSTRAINT PCTABPR_PK PRIMARY KEY (NUMREGIAO, CODPROD)
)
TABLESPACE TS_DADOS
LOGGING
NOCACHE
STORAGE (BUFFER_POOL DEFAULT);
GOSTEI 0
Jair N.

Jair N.

20/01/2016

Juliana este seu banco de dados é SQLServer ou Oracle?
GOSTEI 0
Juliana

Juliana

20/01/2016

que eu saiba é oracle.
GOSTEI 0
Jair N.

Jair N.

20/01/2016

Só que sua "TAG" é SQLServer veja abaixo um exemplo o Oracle é uma merda mesmo nisto...

UPDATE pctabpr a
SET perdescmax = (
SELECT b.perdescmax
FROM pctabpr b
WHERE (b.codprod = a.codprod)
AND (b.numreg = a.numreg - 6))
, perdescmaxtab = (
SELECT b.perdescmaxtab
FROM pctabpr b
WHERE (b.codprod = a.codprod)
AND (b.numreg = a.numreg - 6))
WHERE (a.numreg = 7)
GOSTEI 0
Juliana

Juliana

20/01/2016

show de bola!!!
fiz o acerto e ficou certinho... muito obrigada!
GOSTEI 0
Helder

Helder

20/01/2016

Olá pessoal, tudo bem?
Não sei se já conhecem, mas existe uma plataforma para criação de webservices muito eficiente, basta apenas liberar acesso para o banco de dados, e você pode criar uma nova tabela, um novo campo com apenas um clique, talvez ajude muito vocês.
Fica a indicação do Datasocket.
datasocket.co/free
GOSTEI 0
POSTAR