Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

KUROL3

[Resolvido] Update não vai

Recommended Posts

olá pq o select abaixo retorna o seguinte erro:

 

SQL Server Database Error: An aggregate may not appear in the set list of an UPDATE statement. 6 0

 

já tentei usar cast convert e nada.... resolve..

 

UPDATE 
tabela
SET 
Vencimento	= 	CASE WHEN 
                     max(day(Vencimento)) = 31
                   THEN
                     DATEADD(day,-22, Vencimento) 
                   ELSE
                     DATEADD(day,-21, Vencimento) 
                   END
WHERE 
Cod = '9415' AND 
Seq = '0' AND 
DV = '6' AND 
Parc > '2'

 

Marco

Compartilhar este post


Link para o post
Compartilhar em outros sites

olá pq o select abaixo retorna o seguinte erro:

 

SQL Server Database Error: An aggregate may not appear in the set list of an UPDATE statement. 6 0

 

já tentei usar cast convert e nada.... resolve..

 

UPDATE 
tabela
SET 
Vencimento	= 	CASE WHEN 
                     max(day(Vencimento)) = 31
                   THEN
                     DATEADD(day,-22, Vencimento) 
                   ELSE
                     DATEADD(day,-21, Vencimento) 
                   END
WHERE 
Cod = '9415' AND 
Seq = '0' AND 
DV = '6' AND 
Parc > '2'

 

Marco

 

 

Essa menssagem ocorre devido a você ta usando o Max e outro campo sem dar group.

Esse update não deveria ser assim:

 

UPDATE 
tabela
SET 
Vencimento	= 	CASE WHEN 
                     max(day(Vencimento)) = 31
                   THEN
                     DATEADD(day,-22, max(Vencimento)) 
                   ELSE
                     DATEADD(day,-21, max(Vencimento)) 
                   END
WHERE 
Cod = '9415' AND 
Seq = '0' AND 
DV = '6' AND 
Parc > '2'

 

Creio que assim ira funfa testa ai fala pra nos ;D

:joia:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Coloquei no final

 

erro:

27/12/2010 13:35:54 0:00:00.070 SQL Server Database Error: Incorrect syntax near the keyword 'group'.

 

UPDATE         tabelaSET         Vencimento      =       CASE WHEN                       max(day(Vencimento)) = 31                    THEN                      DATEADD(day,-22, Vencimento)                     ELSE                      DATEADD(day,-21, Vencimento)                     ENDWHERE         Cod = '9415' AND         Seq = '0' AND         DV = '6' AND Parc > '2' GROUP BY Cod, Seq, DV, Parc

Compartilhar este post


Link para o post
Compartilhar em outros sites

Coloquei no final

 

erro:

27/12/2010 13:35:54 0:00:00.070 SQL Server Database Error: Incorrect syntax near the keyword 'group'.

 

UPDATE         tabelaSET         Vencimento      =       CASE WHEN                       max(day(Vencimento)) = 31                    THEN                      DATEADD(day,-22, Vencimento)                     ELSE                      DATEADD(day,-21, Vencimento)                     ENDWHERE         Cod = '9415' AND         Seq = '0' AND         DV = '6' AND Parc > '2' GROUP BY Cod, Seq, DV, Parc

 

................ entaum no group você coloca os campos que você maniplula e não as condições no caso seria so o campo vencimento.

tipo assim

UPDATE tabela SET Vencimento = 
CASE WHEN max(day(Vencimento)) = 31 THEN 
DATEADD(day,-22, Vencimento)
ELSE
DATEADD(day,-21, Vencimento)
END
WHERE Cod = '9415' AND Seq = '0' AND DV = '6' AND Parc > '2' GROUP BY Vencimento

 

O código que eu te mandei anteriormente serviu?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Coloquei no final

 

erro:

27/12/2010 13:35:54 0:00:00.070 SQL Server Database Error: Incorrect syntax near the keyword 'group'.

 

UPDATE         tabelaSET         Vencimento      =       CASE WHEN                       max(day(Vencimento)) = 31                    THEN                      DATEADD(day,-22, Vencimento)                     ELSE                      DATEADD(day,-21, Vencimento)                     ENDWHERE         Cod = '9415' AND         Seq = '0' AND         DV = '6' AND Parc > '2' GROUP BY Cod, Seq, DV, Parc

 

................ entaum no group você coloca os campos que você maniplula e não as condições no caso seria so o campo vencimento.

tipo assim

UPDATE tabela SET Vencimento = 
CASE WHEN max(day(Vencimento)) = 31 THEN 
DATEADD(day,-22, Vencimento)
ELSE
DATEADD(day,-21, Vencimento)
END
WHERE Cod = '9415' AND Seq = '0' AND DV = '6' AND Parc > '2' GROUP BY Vencimento

 

O código que eu te mandei anteriormente serviu?

 

 

o que você mandou anteriormente não vi nenhuma diferença...

agora esse que você mandou group by Vencimento ainda continua dando erro

SQL Server Database Error: Incorrect syntax near the keyword 'GROUP'

 

Marco

Compartilhar este post


Link para o post
Compartilhar em outros sites

Coloquei no final

 

erro:

27/12/2010 13:35:54 0:00:00.070 SQL Server Database Error: Incorrect syntax near the keyword 'group'.

 

UPDATE         tabelaSET         Vencimento      =       CASE WHEN                       max(day(Vencimento)) = 31                    THEN                      DATEADD(day,-22, Vencimento)                     ELSE                      DATEADD(day,-21, Vencimento)                     ENDWHERE         Cod = '9415' AND         Seq = '0' AND         DV = '6' AND Parc > '2' GROUP BY Cod, Seq, DV, Parc

 

................ entaum no group você coloca os campos que você maniplula e não as condições no caso seria so o campo vencimento.

tipo assim

UPDATE tabela SET Vencimento = 
CASE WHEN max(day(Vencimento)) = 31 THEN 
DATEADD(day,-22, Vencimento)
ELSE
DATEADD(day,-21, Vencimento)
END
WHERE Cod = '9415' AND Seq = '0' AND DV = '6' AND Parc > '2' GROUP BY Vencimento

 

O código que eu te mandei anteriormente serviu?

 

 

o que você mandou anteriormente não vi nenhuma diferença...

agora esse que você mandou group by Vencimento ainda continua dando erro

SQL Server Database Error: Incorrect syntax near the keyword 'GROUP'

 

Marco

 

o max no vencimento...........

Compartilhar este post


Link para o post
Compartilhar em outros sites

Creio o problema ser o max :

 

UPDATE         tabela
SET         Vencimento      =       CASE WHEN                       (day(Vencimento)) = 31                    
                                   THEN                      DATEADD(day,-22, max(Vencimento))                     
                                   ELSE                      DATEADD(day,-21, max(Vencimento))                     
                                   END
WHERE         Cod = '9415' 
AND         Seq = '0' 
AND         DV = '6' 
AND Parc > '2'

Compartilhar este post


Link para o post
Compartilhar em outros sites

Creio o problema ser o max :

 

UPDATE         tabela
SET         Vencimento      =       CASE WHEN                       (day(Vencimento)) = 31                    
                                   THEN                      DATEADD(day,-22, max(Vencimento))                     
                                   ELSE                      DATEADD(day,-21, max(Vencimento))                     
                                   END
WHERE         Cod = '9415' 
AND         Seq = '0' 
AND         DV = '6' 
AND Parc > '2'

 

Valeu mota pela resposta mas eu preciso do max ali... não pode tirar...

Marco

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pegue a última sentença que você chegou nesse Update e faça um Select, aliás já fiz para você:

Select 
   Vencimento = 
   CASE WHEN (day(Vencimento)) = 31 THEN 
       DATEADD(day,-22, max(Vencimento)) 
   ELSE 
       DATEADD(day,-21, max(Vencimento)) 
   END
From
   Tabela
WHERE Cod = '9415' AND Seq = '0' AND  DV = '6' AND Parc > '2'

 

Só que essa foi a que você postou. Bem, veja se dá erro, tenta consertar o Select primeiro, se conseguir, só fazer o Update.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.