SQL - SQL - ORDER BYE - GROUP BY

 
Vista:

SQL - ORDER BYE - GROUP BY

Publicado por IVAN (1 intervención) el 03/08/2018 02:18:10
Buenas noches estimados foristes he realizado algunas consultas en sql pero creando vistas cuando se pone el group by y el order by como que no lo acepta. le mando el codigo.

1
2
3
4
5
6
7
8
9
10
11
12
13
create view v_2Proveedores_año
as
SELECT Proveedores.CompanyName --,year(OrderDate) as fechita
FROM Proveedores
inner join productos
on productos.CodPrv=Proveedores.CodPrv
inner join [Order Details]
on [Order Details].CodPro=[Order Details].CodPro
inner join orders
on [Order Details].CodOrd=orders.CodOrd
where year(OrderDate)=2015 or year(orderDate)=2016
group by CompanyName --,OrderDate
--order by CompanyName

asi funciona correctamente, pero si quito los comentarios me da error ya que tambien kiero que aparesca en la consulta el campo fechita con las fechas correspondientes y ordenado por el campo nombre de compañia.
muchas gracias por sus respuestas.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 806
Bronce
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

SQL - ORDER BYE - GROUP BY

Publicado por Leonardo Josué (1173 intervenciones) el 03/08/2018 15:46:37
Hola Ivan:

No nos dices con qué motor de Base de Datos estás trabajando y así resulta complicado darte una respuesta puntual, ya que cada DBMS maneja una sintaxis distinta. Sin embargo hay algunas observaciones que conviene hacer.

1. En la consulta no estás utilizando ninguna función de agrupación (COUNT, MIN, MAX, AVG...) por lo tanto no entiendo muy bien para qué necesitas agrupar tus datos. Es convieniente que pongas cuál es la estructura de tus tablas y que pongas algunos datos de ejemplo, así, a partir de esos datos dinos qué es lo que esperas obtener como salida. Es posible que lo que estás tratando de hacer no sea la mejor forma para hacerlo.

2. Dices que al poner los campos comentados la consulta te está marcando un error, pero no nos dices cuál es este error O_o. Siempre debes de incluir los mensajes que te está regresando el DBMS, ya que son de ayuda para ver que está mal.

3. Es conveniente que cuando hagas JOIN's con más de una tabla siempre indiques a qué tabla pertenece cada campo que utilizas. Es común que aparezcan errores de COLUMNA AMBIGUA cuando no se indica esto.

4. Finalmente, algunos DBMS piden que la sección GROUP BY contenga EXACTAMENTE LOS MISMOS CAMPOS QUE EN EL SELECT y que no formen parte de una función de agregación, entonces, podrías probar la consulta así:


1
2
3
4
5
6
7
8
9
SELECT
  Proveedores.CompanyName,
  YEAR(OrderDate) as fechita
FROM Proveedores
INNER JOIN productos ON productos.CodPrv=Proveedores.CodPrv
INNER JOIN [Order Details] ON [Order Details].CodPro=[Order Details].CodPro
INNER JOIN orders ON [Order Details].CodOrd=orders.CodOrd
WHERE YEAR(OrderDate)=2015 OR YEAR(orderDate)=2016
GROUP BY CompanyName, YEAR(OrderDate)

(Aquí como comenté en el punto 3 faltaría que pongas a qué tabla pertenece el campo OrderDate

Si esto funciona entonces agregas la cláusula ORDER BY y vuelves a probar.

Finalmente, si continuas con problemas, entonces dinos con qué BD's estás trabajando, atiende los puntos 1 y 2 y con gusto tratamos de ayudarte.

Saludos
Leo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar