error en vista

22/11/2003 - 17:21 por Tolo | Informe spam
hola, la siguiente sentencia:

create view v_LlistatPmpc as
select ((sum(t_LiniesDocument.stock*cost_unitari ) +
sum(t_LiniesDocument.stock*cost_unitari )) / v_LlistatStock.stock)
as import_pmpc,
t_LiniesDocument.fk_article, t_LiniesDocument.fk_magatzem
from t_LiniesDocument inner join T_Documents on
t_documents.id_document=t_LiniesDocument.fk_document
inner join v_LlistatStock on t_LiniesDocument.fk_article v_LlistatStock.fk_article and t_LiniesDocument.fk_magatzem v_LlistatStock.fk_magatzem
group by v_LlistatStock.fk_article, t_LiniesDocument.fk_article,
t_LiniesDocument.fk_magatzem


me da el error:

Servidor: mensaje 8120, nivel 16, estado 1, procedimiento v_LlistatPmpc,
línea 3
La columna 'v_LlistatStock.stock' de la lista de selección no es válida,
porque no está contenida en una función de agregado ni en la cláusula GROUP
BY.


pq???
 

Leer las respuestas

#1 Salvador Ramos
22/11/2003 - 20:06 | Informe spam
Hola:

Lo que te ocurre es que estás mezclando en una misma Select funciones de
agregado con columnas de tu tabla. Y eso no es posible ya que en ese caso
cada columna devolvería un nº de filas diferente.
Ejemplo (sobre Northwind):
select CategoryID from products -> 77 filas
select sum(unitprice) from products -> 1 fila
select CategoryID, sum(unitprice) from products -> Error

select CategoryID from products group by categoryid -> 8 filas
select sum(unitprice) from products group by categoryid -> 8 filas

Siempre que utilices funciones de agregado, estas devuelven una sola fila si
no se utiliza group by, en cambio si se utiliza group by devuelven una fila
por grupo.
Cuando se utilizan funciones de agregado sólo se pueden poner campos que
están en la cláusula group by, ya que es la única forma de garantizar que
todas las columnas devolverán el mismo número de filas.


Un saludo
Salvador Ramos
Murcia - España

No puedes conseguir software rápidamente disminuyendo su calidad.
En cambio, si que lo consigues aumentando la calidad.

www.helpdna.net (información sobre Windows DNA, SQL Server, VB, ...)


Microsoft MVP SQL Server
MCP SQL Server
PASS Spanish Group (www.sqlpass.org)


" Tolo" escribió en el mensaje
news:u5E$
hola, la siguiente sentencia:

create view v_LlistatPmpc as
select ((sum(t_LiniesDocument.stock*cost_unitari ) +
sum(t_LiniesDocument.stock*cost_unitari )) / v_LlistatStock.stock)
as import_pmpc,
t_LiniesDocument.fk_article, t_LiniesDocument.fk_magatzem
from t_LiniesDocument inner join T_Documents on
t_documents.id_document=t_LiniesDocument.fk_document
inner join v_LlistatStock on t_LiniesDocument.fk_article > v_LlistatStock.fk_article and t_LiniesDocument.fk_magatzem > v_LlistatStock.fk_magatzem
group by v_LlistatStock.fk_article, t_LiniesDocument.fk_article,
t_LiniesDocument.fk_magatzem


me da el error:

Servidor: mensaje 8120, nivel 16, estado 1, procedimiento v_LlistatPmpc,
línea 3
La columna 'v_LlistatStock.stock' de la lista de selección no es válida,
porque no está contenida en una función de agregado ni en la cláusula


GROUP
BY.


pq???


Preguntas similares