Buscar el Maximo

04/09/2007 - 15:00 por Nikita | Informe spam
Hola :
Tengo una consulta que hasta hace unos dias no me habia dado ningun
problema... pero ayer mientras proba el ingreso de datos me percate de que
cuando busco el maximo de un correlativo todo va bien hasta que llega al nº
10 y ahi se queda cada vez que registro y donde deberia aumentar al numero
siguiente se queda simpre en el 10. la consulta es la siguiente,

SELECT MAX(correlativo) + 1 AS correlativo
FROM muestreos
GROUP BY a, b
HAVING (( batch = "cadena") and (Cod_Caja = dato))
desde ya muchas gracias
Sabrina

Preguntas similare

Leer las respuestas

#1 Ele
04/09/2007 - 15:49 | Informe spam
porque lo agrupas por a y b?
trata asi
SELECT top 1 correlativo + 1
FROM muestreos
Where batch Like 'cadena'
And Cod_Caja = dato
Order By correlativo Desc

"Nikita" escribió en el mensaje
news:
Hola :
Tengo una consulta que hasta hace unos dias no me habia dado ningun
problema... pero ayer mientras proba el ingreso de datos me percate de que
cuando busco el maximo de un correlativo todo va bien hasta que llega al
nº 10 y ahi se queda cada vez que registro y donde deberia aumentar al
numero siguiente se queda simpre en el 10. la consulta es la siguiente,

SELECT MAX(correlativo) + 1 AS correlativo
FROM muestreos
GROUP BY a, b
HAVING (( batch = "cadena") and (Cod_Caja = dato))
desde ya muchas gracias
Sabrina

Respuesta Responder a este mensaje
#2 Alejandro Mesa
04/09/2007 - 15:52 | Informe spam
Nikita,

Casi siempre se usa el resultado de las funciones de agregacion o de las
columnas que aparecen en la clausula "group by", en la clausula "having". En
este caso no veo una relacion directa, hasta dudaria que esa sentencia este
funcionando correctamente, al menos que la expresion de filtro este en la
clausula "where".

HAVING (( batch = "cadena") and (Cod_Caja = dato))



Las columnas [batch], [Cod_Caja] y [dato] no forman parte the las columnas
de agrupacion, ni de las columnas usadas en la funcion de agragacion. Si
trato de simular la sentencia que posteastes, este es el error que recivo.

create table #muestreos (
a int,
b int,
batch varchar(10),
cod_Caja int,
dato int,
correlativo int
)
go

SELECT MAX(correlativo) + 1 AS correlativo
FROM #muestreos
GROUP BY a, b
HAVING (( batch = 'cadena') and (Cod_Caja = dato))
go

drop table #muestreos
go

Resultado:

Msg 8121, Level 16, State 1, Line 2
Column '#muestreos.batch' is invalid in the HAVING clause because it is not
contained in either an aggregate function or the GROUP BY clause.
Msg 8121, Level 16, State 1, Line 2
Column '#muestreos.cod_Caja' is invalid in the HAVING clause because it is
not contained in either an aggregate function or the GROUP BY clause.
Msg 8121, Level 16, State 1, Line 2
Column '#muestreos.dato' is invalid in the HAVING clause because it is not
contained in either an aggregate function or the GROUP BY clause.


AMB

"Nikita" wrote:

Hola :
Tengo una consulta que hasta hace unos dias no me habia dado ningun
problema... pero ayer mientras proba el ingreso de datos me percate de que
cuando busco el maximo de un correlativo todo va bien hasta que llega al nº
10 y ahi se queda cada vez que registro y donde deberia aumentar al numero
siguiente se queda simpre en el 10. la consulta es la siguiente,

SELECT MAX(correlativo) + 1 AS correlativo
FROM muestreos
GROUP BY a, b
HAVING (( batch = "cadena") and (Cod_Caja = dato))
desde ya muchas gracias
Sabrina



Respuesta Responder a este mensaje
#3 Nikita
04/09/2007 - 16:39 | Informe spam
Disculpen ... estoy tan distraida por la falta de sueño... que trate no me
di cuenta que escribi mal la consulta:
SELECT MAX(correlativo) + 1 AS correlativo
FROM muestreos
GROUP BY a, b
HAVING (( a = "cadena") and (b = dato))
esta era la idea
gracias por contestar


"Alejandro Mesa" escribió en el
mensaje news:
Nikita,

Casi siempre se usa el resultado de las funciones de agregacion o de las
columnas que aparecen en la clausula "group by", en la clausula "having".
En
este caso no veo una relacion directa, hasta dudaria que esa sentencia
este
funcionando correctamente, al menos que la expresion de filtro este en la
clausula "where".

HAVING (( batch = "cadena") and (Cod_Caja = dato))



Las columnas [batch], [Cod_Caja] y [dato] no forman parte the las columnas
de agrupacion, ni de las columnas usadas en la funcion de agragacion. Si
trato de simular la sentencia que posteastes, este es el error que recivo.

create table #muestreos (
a int,
b int,
batch varchar(10),
cod_Caja int,
dato int,
correlativo int
)
go

SELECT MAX(correlativo) + 1 AS correlativo
FROM #muestreos
GROUP BY a, b
HAVING (( batch = 'cadena') and (Cod_Caja = dato))
go

drop table #muestreos
go

Resultado:

Msg 8121, Level 16, State 1, Line 2
Column '#muestreos.batch' is invalid in the HAVING clause because it is
not
contained in either an aggregate function or the GROUP BY clause.
Msg 8121, Level 16, State 1, Line 2
Column '#muestreos.cod_Caja' is invalid in the HAVING clause because it is
not contained in either an aggregate function or the GROUP BY clause.
Msg 8121, Level 16, State 1, Line 2
Column '#muestreos.dato' is invalid in the HAVING clause because it is not
contained in either an aggregate function or the GROUP BY clause.


AMB

"Nikita" wrote:

Hola :
Tengo una consulta que hasta hace unos dias no me habia dado ningun
problema... pero ayer mientras proba el ingreso de datos me percate de
que
cuando busco el maximo de un correlativo todo va bien hasta que llega al

10 y ahi se queda cada vez que registro y donde deberia aumentar al
numero
siguiente se queda simpre en el 10. la consulta es la siguiente,

SELECT MAX(correlativo) + 1 AS correlativo
FROM muestreos
GROUP BY a, b
HAVING (( batch = "cadena") and (Cod_Caja = dato))
desde ya muchas gracias
Sabrina



Respuesta Responder a este mensaje
#4 Alejandro Mesa
04/09/2007 - 19:44 | Informe spam
Nikita,

SELECT MAX(correlativo) + 1 AS correlativo
FROM muestreos
GROUP BY a, b
HAVING (( a = "cadena") and (b = dato))



Si solo deseas el valor devuelto por la funcion de agregacion, para un grupo
especifico, entonces te recomiendo que hagas el filtro en la clausula "where".

SELECT MAX(correlativo) + 1 AS correlativo
FROM muestreos
WHERE (( a = "cadena") and (b = dato))

Claro esta que eso no solucionara tu problema. Nos puedes comentar sobre
donde y como tratas de accesar este valor?

Si estas haciendo un insert en masa, tendras que esperar a que la
transaccion termine. En caso de indicar un # de filas por batch, entonces ese
sera el incremento que veras.


AMB


"Nikita" wrote:

Disculpen ... estoy tan distraida por la falta de sueño... que trate no me
di cuenta que escribi mal la consulta:
SELECT MAX(correlativo) + 1 AS correlativo
FROM muestreos
GROUP BY a, b
HAVING (( a = "cadena") and (b = dato))
esta era la idea
gracias por contestar


"Alejandro Mesa" escribió en el
mensaje news:
> Nikita,
>
> Casi siempre se usa el resultado de las funciones de agregacion o de las
> columnas que aparecen en la clausula "group by", en la clausula "having".
> En
> este caso no veo una relacion directa, hasta dudaria que esa sentencia
> este
> funcionando correctamente, al menos que la expresion de filtro este en la
> clausula "where".
>
>> HAVING (( batch = "cadena") and (Cod_Caja = dato))
>
> Las columnas [batch], [Cod_Caja] y [dato] no forman parte the las columnas
> de agrupacion, ni de las columnas usadas en la funcion de agragacion. Si
> trato de simular la sentencia que posteastes, este es el error que recivo.
>
> create table #muestreos (
> a int,
> b int,
> batch varchar(10),
> cod_Caja int,
> dato int,
> correlativo int
> )
> go
>
> SELECT MAX(correlativo) + 1 AS correlativo
> FROM #muestreos
> GROUP BY a, b
> HAVING (( batch = 'cadena') and (Cod_Caja = dato))
> go
>
> drop table #muestreos
> go
>
> Resultado:
>
> Msg 8121, Level 16, State 1, Line 2
> Column '#muestreos.batch' is invalid in the HAVING clause because it is
> not
> contained in either an aggregate function or the GROUP BY clause.
> Msg 8121, Level 16, State 1, Line 2
> Column '#muestreos.cod_Caja' is invalid in the HAVING clause because it is
> not contained in either an aggregate function or the GROUP BY clause.
> Msg 8121, Level 16, State 1, Line 2
> Column '#muestreos.dato' is invalid in the HAVING clause because it is not
> contained in either an aggregate function or the GROUP BY clause.
>
>
> AMB
>
> "Nikita" wrote:
>
>> Hola :
>> Tengo una consulta que hasta hace unos dias no me habia dado ningun
>> problema... pero ayer mientras proba el ingreso de datos me percate de
>> que
>> cuando busco el maximo de un correlativo todo va bien hasta que llega al
>> nº
>> 10 y ahi se queda cada vez que registro y donde deberia aumentar al
>> numero
>> siguiente se queda simpre en el 10. la consulta es la siguiente,
>>
>> SELECT MAX(correlativo) + 1 AS correlativo
>> FROM muestreos
>> GROUP BY a, b
>> HAVING (( batch = "cadena") and (Cod_Caja = dato))
>> desde ya muchas gracias
>> Sabrina
>>
>>
>>



Respuesta Responder a este mensaje
#5 Nikita
06/09/2007 - 18:12 | Informe spam
Gracias alejandro y ele por sus respuesta
Estoy provando la opcion que me dio Ele y creo que funciona bien... por lo
menos hasta el momento no me ha dado problemas... porque no se porque motivo
si utilizo mi opcion o la de Alejandro el max solo llegua hasta el 10... es
una locura esto... porque como comentaba habia estado funcionando bien y
ahora la verdad no entiendo que paso.
lo que intento hacer es continuar con un correlativo, mi sistema lo que
hace es registra muestreos y necesito llevar un correlativo caja a caja y a
su vez dentro de la caja, pieza a pieza ... mi problema esta en el pieza a
pieza ... no se si el problema tiene que vez con el aumento del volumen de
informacion...
eso por el momento y denuevo gracias
Sabrina
"Alejandro Mesa" escribió en el
mensaje news:
Nikita,

SELECT MAX(correlativo) + 1 AS correlativo
FROM muestreos
GROUP BY a, b
HAVING (( a = "cadena") and (b = dato))



Si solo deseas el valor devuelto por la funcion de agregacion, para un
grupo
especifico, entonces te recomiendo que hagas el filtro en la clausula
"where".

SELECT MAX(correlativo) + 1 AS correlativo
FROM muestreos
WHERE (( a = "cadena") and (b = dato))

Claro esta que eso no solucionara tu problema. Nos puedes comentar sobre
donde y como tratas de accesar este valor?

Si estas haciendo un insert en masa, tendras que esperar a que la
transaccion termine. En caso de indicar un # de filas por batch, entonces
ese
sera el incremento que veras.


AMB


"Nikita" wrote:

Disculpen ... estoy tan distraida por la falta de sueño... que trate no
me
di cuenta que escribi mal la consulta:
SELECT MAX(correlativo) + 1 AS correlativo
FROM muestreos
GROUP BY a, b
HAVING (( a = "cadena") and (b = dato))
esta era la idea
gracias por contestar


"Alejandro Mesa" escribió en el
mensaje news:
> Nikita,
>
> Casi siempre se usa el resultado de las funciones de agregacion o de
> las
> columnas que aparecen en la clausula "group by", en la clausula
> "having".
> En
> este caso no veo una relacion directa, hasta dudaria que esa sentencia
> este
> funcionando correctamente, al menos que la expresion de filtro este en
> la
> clausula "where".
>
>> HAVING (( batch = "cadena") and (Cod_Caja = dato))
>
> Las columnas [batch], [Cod_Caja] y [dato] no forman parte the las
> columnas
> de agrupacion, ni de las columnas usadas en la funcion de agragacion.
> Si
> trato de simular la sentencia que posteastes, este es el error que
> recivo.
>
> create table #muestreos (
> a int,
> b int,
> batch varchar(10),
> cod_Caja int,
> dato int,
> correlativo int
> )
> go
>
> SELECT MAX(correlativo) + 1 AS correlativo
> FROM #muestreos
> GROUP BY a, b
> HAVING (( batch = 'cadena') and (Cod_Caja = dato))
> go
>
> drop table #muestreos
> go
>
> Resultado:
>
> Msg 8121, Level 16, State 1, Line 2
> Column '#muestreos.batch' is invalid in the HAVING clause because it is
> not
> contained in either an aggregate function or the GROUP BY clause.
> Msg 8121, Level 16, State 1, Line 2
> Column '#muestreos.cod_Caja' is invalid in the HAVING clause because it
> is
> not contained in either an aggregate function or the GROUP BY clause.
> Msg 8121, Level 16, State 1, Line 2
> Column '#muestreos.dato' is invalid in the HAVING clause because it is
> not
> contained in either an aggregate function or the GROUP BY clause.
>
>
> AMB
>
> "Nikita" wrote:
>
>> Hola :
>> Tengo una consulta que hasta hace unos dias no me habia dado ningun
>> problema... pero ayer mientras proba el ingreso de datos me percate de
>> que
>> cuando busco el maximo de un correlativo todo va bien hasta que llega
>> al
>> nº
>> 10 y ahi se queda cada vez que registro y donde deberia aumentar al
>> numero
>> siguiente se queda simpre en el 10. la consulta es la siguiente,
>>
>> SELECT MAX(correlativo) + 1 AS correlativo
>> FROM muestreos
>> GROUP BY a, b
>> HAVING (( batch = "cadena") and (Cod_Caja = dato))
>> desde ya muchas gracias
>> Sabrina
>>
>>
>>



email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida