Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

[SOLUCIONADO] Consulta en northwind

Estas en el tema de Consulta en northwind en el foro de SQL Server en Foros del Web. Hola que tal, bueno no soy tan experto en el uso de sql pero si manejo algo, necesito ayuda de ustedes ya que de estas ...

  #1 (permalink)  
Antiguo 19/11/2013, 08:21
 
Fecha de Ingreso: noviembre-2013
Mensajes: 28
Antigüedad: 10 años, 5 meses
Puntos: 0
Consulta en northwind

Hola que tal, bueno no soy tan experto en el uso de sql pero si manejo algo, necesito ayuda de ustedes ya que de estas dos consultas depende mi vida (Son PUNTOS PARA EL PARCIAL FINAL DE MI CURSO DE TRANSACT)

Bueno sin mas preambulos aca va el formato de como debe acabar la consulta

En este caso debo crear una funcion escalar para llamarla cuando yo quiera.



Ami me queda de esta manera



Como ven se me repiten los datos del año 1996 en todos los años que siguen.

Este es el codigo que estoy usando

Código:
Alter function m_ventaPtos(@pais varchar(500))
returns @monto table (Pais varchar(500),[1996] int,[1997] int,[1998] int)
as
begin
	insert @monto 
	select o.ShipCountry Pais,sum(od.UnitPrice*od.Quantity) [1996],
			sum(od.UnitPrice*od.Quantity) [1997],sum(od.UnitPrice*od.Quantity) [1998]
	from [Order Details] od
	inner join Orders o on o.OrderID=od.OrderID
	group by o.ShipCountry

	return 
end

select * from dbo.m_ventaPtos('')
Por favor haber si me orientan ya que no soy muy bueno en sql que digamos
  #2 (permalink)  
Antiguo 19/11/2013, 08:25
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Consulta en northwind

si te entiendo tu funcion deberia de regresar los paises y los totales por año verdad??? o tiene que hacer otra cosa, porque en tu codigo recibes de parametro los años...para que??? si explicas que tiene que hacer la funcion se te puede ayudar
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 19/11/2013, 08:44
 
Fecha de Ingreso: noviembre-2013
Mensajes: 28
Antigüedad: 10 años, 5 meses
Puntos: 0
Respuesta: Consulta en northwind

Cita:
Iniciado por Libras Ver Mensaje
si te entiendo tu funcion deberia de regresar los paises y los totales por año verdad??? o tiene que hacer otra cosa, porque en tu codigo recibes de parametro los años...para que??? si explicas que tiene que hacer la funcion se te puede ayudar
Eso es lo que debe arrojar o retornar mi funcion, y lo de los años lo hice para que aparezcan como columnas. Bueno no se si estoy mal o bien haber si me orientas como digo son PUNTOS para mi parcial final.

Tengo que seguir la estructura de como mostre en la imagen.

Por eso necesito su ayuda
  #4 (permalink)  
Antiguo 19/11/2013, 08:48
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Consulta en northwind

y ahora si pones un ejemplo de los datos? seria mucho mejor :P
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #5 (permalink)  
Antiguo 19/11/2013, 08:56
 
Fecha de Ingreso: noviembre-2013
Mensajes: 28
Antigüedad: 10 años, 5 meses
Puntos: 0
Respuesta: Consulta en northwind

Cita:
Iniciado por Libras Ver Mensaje
y ahora si pones un ejemplo de los datos? seria mucho mejor :P
Los subi a Flickr pero no se muestran. aca estan


DE ESTA FORMA DEBE QUEDAR.


ASI ME QUEDA.


como ven se repite el monto de 1996 en los demas años :(
  #6 (permalink)  
Antiguo 19/11/2013, 09:07
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Consulta en northwind

bueno supongamos que la suma del año esta bien

Código SQL:
Ver original
  1. SELECT o.ShipCountry Pais,
  2. CASE WHEN datepart(yyyy,campo_fecha)=1996 THEN SUM(od.UnitPrice*od.Quantity) END AS [1996],
  3. CASE WHEN datepart(yyyy,campo_fecha)=1997 THEN SUM(od.UnitPrice*od.Quantity) END AS [1997],
  4. CASE WHEN datepart(yyyy,campo_fecha)=1998 THEN SUM(od.UnitPrice*od.Quantity) END AS [1998]
  5.  
  6.     FROM [ORDER Details] od
  7.     INNER JOIN Orders o ON o.OrderID=od.OrderID
  8.     GROUP BY o.ShipCountry
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #7 (permalink)  
Antiguo 19/11/2013, 11:36
 
Fecha de Ingreso: noviembre-2013
Mensajes: 28
Antigüedad: 10 años, 5 meses
Puntos: 0
Respuesta: Consulta en northwind

Cita:
Iniciado por Libras Ver Mensaje
bueno supongamos que la suma del año esta bien

Código SQL:
Ver original
  1. SELECT o.ShipCountry Pais,
  2. CASE WHEN datepart(yyyy,campo_fecha)=1996 THEN SUM(od.UnitPrice*od.Quantity) END AS [1996],
  3. CASE WHEN datepart(yyyy,campo_fecha)=1997 THEN SUM(od.UnitPrice*od.Quantity) END AS [1997],
  4. CASE WHEN datepart(yyyy,campo_fecha)=1998 THEN SUM(od.UnitPrice*od.Quantity) END AS [1998]
  5.  
  6.     FROM [ORDER Details] od
  7.     INNER JOIN Orders o ON o.OrderID=od.OrderID
  8.     GROUP BY o.ShipCountry
Sorry mi ignorancia pero en campo_fecha pondria o que deberia poner para que abarque todo el año 1996 por ejemplo ¿?
  #8 (permalink)  
Antiguo 19/11/2013, 11:41
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Consulta en northwind

campo_fecha=campo fecha de la tabla o el campo en donde se almacena la fecha, investiga un poco sobre la funcion datepart.
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #9 (permalink)  
Antiguo 19/11/2013, 11:44
 
Fecha de Ingreso: noviembre-2013
Mensajes: 28
Antigüedad: 10 años, 5 meses
Puntos: 0
Respuesta: Consulta en northwind

Cita:
Iniciado por Libras Ver Mensaje
campo_fecha=campo fecha de la tabla o el campo en donde se almacena la fecha, investiga un poco sobre la funcion datepart.
Gracias pero ya investigue un poco, pero como hago referencia para que me abarque todo el año, sorry si soy muy incomodo por mi ignorancia pero como ves mi nota para universidad y como transact y yo no nos llevamos muy bien pero quiero aprobar esta materia.

Si me la facilitaras mas please ;)
  #10 (permalink)  
Antiguo 19/11/2013, 11:49
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Consulta en northwind

a ver datepart es una funcion que te obtiene solo la parte del año de una fecha almacenada en la base de datos, digamos que tengo la columna fecha con los sig valores 01/01/2001,01/01/2002 y 01/01/2003 si hago un datepart de solo el año me regresara los valores 2001,2002 y 2003 y todas las fechas que sean del año 2001(sea cual sea el mes) entraran en la primer condicion, espero haberme explicado
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #11 (permalink)  
Antiguo 19/11/2013, 11:53
 
Fecha de Ingreso: noviembre-2013
Mensajes: 28
Antigüedad: 10 años, 5 meses
Puntos: 0
Respuesta: Consulta en northwind

Cita:
Iniciado por Libras Ver Mensaje
a ver datepart es una funcion que te obtiene solo la parte del año de una fecha almacenada en la base de datos, digamos que tengo la columna fecha con los sig valores 01/01/2001,01/01/2002 y 01/01/2003 si hago un datepart de solo el año me regresara los valores 2001,2002 y 2003 y todas las fechas que sean del año 2001(sea cual sea el mes) entraran en la primer condicion, espero haberme explicado
Ya entendi entonces en campo fecha pongo la columna donde se almacenan las fechas de la ventas en mi caso OrderDate.

Ojala me funcione muchas gracias

PTMR AHORA ME APARECE DE ESTA MANERA


Última edición por Luiszzxd; 19/11/2013 a las 12:00 Razón: agregar
  #12 (permalink)  
Antiguo 19/11/2013, 12:03
 
Fecha de Ingreso: noviembre-2013
Mensajes: 28
Antigüedad: 10 años, 5 meses
Puntos: 0
Respuesta: Consulta en northwind

Este es el codigo que le puesto.

Código SQL:
Ver original
  1. SELECT o.ShipCountry Pais,
  2. CASE WHEN datepart(yyyy,o.OrderDate)=1996 THEN SUM(od.UnitPrice*od.Quantity) END AS [1996],
  3. CASE WHEN datepart(yyyy,o.OrderDate)=1997 THEN SUM(od.UnitPrice*od.Quantity) END AS [1997],
  4. CASE WHEN datepart(yyyy,o.OrderDate)=1998 THEN SUM(od.UnitPrice*od.Quantity) END AS [1998]
  5.  
  6.     FROM [ORDER Details] od
  7.     INNER JOIN Orders o ON o.OrderID=od.OrderID
  8.     GROUP BY o.ShipCountry,YEAR(o.OrderDate)

Pareciera que me mostrara solo un monto de los tres años.
  #13 (permalink)  
Antiguo 19/11/2013, 12:13
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Consulta en northwind

pues es lo que estas pidiendo no?? te pregunte cual es tu requerimiento y me diste una imagen donde aparece el pais y 3 años...y eso es lo que obtienes con ese query....
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #14 (permalink)  
Antiguo 19/11/2013, 13:37
 
Fecha de Ingreso: noviembre-2013
Mensajes: 28
Antigüedad: 10 años, 5 meses
Puntos: 0
Respuesta: Consulta en northwind

Cita:
Iniciado por Libras Ver Mensaje
pues es lo que estas pidiendo no?? te pregunte cual es tu requerimiento y me diste una imagen donde aparece el pais y 3 años...y eso es lo que obtienes con ese query....
Tienes razon pero como hago para evitar ese null ¿?
  #15 (permalink)  
Antiguo 19/11/2013, 13:45
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Consulta en northwind

tomemos por ejemplo mexico, hay cantidades para los años 1996 y 1998?? si no hay cantidades entonces no apareceran valores en esos años para evitar el null puedes hacer esto:

Código SQL:
Ver original
  1. SELECT pais,isnull([1996],0) AS [1996],isnull([1997],0) AS [1997],isnull([1998],0) AS [1998]
  2. FROM (
  3. SELECT o.ShipCountry Pais,
  4. CASE WHEN datepart(yyyy,o.OrderDate)=1996 THEN SUM(od.UnitPrice*od.Quantity) END AS [1996],
  5. CASE WHEN datepart(yyyy,o.OrderDate)=1997 THEN SUM(od.UnitPrice*od.Quantity) END AS [1997],
  6. CASE WHEN datepart(yyyy,o.OrderDate)=1998 THEN SUM(od.UnitPrice*od.Quantity) END AS [1998]
  7.  
  8.     FROM [ORDER Details] od
  9.     INNER JOIN Orders o ON o.OrderID=od.OrderID
  10.     GROUP BY o.ShipCountry,YEAR(o.OrderDate)
  11. ) AS t1
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #16 (permalink)  
Antiguo 19/11/2013, 21:19
 
Fecha de Ingreso: noviembre-2013
Mensajes: 28
Antigüedad: 10 años, 5 meses
Puntos: 0
Respuesta: Consulta en northwind

Cita:
Iniciado por Libras Ver Mensaje
tomemos por ejemplo mexico, hay cantidades para los años 1996 y 1998?? si no hay cantidades entonces no apareceran valores en esos años para evitar el null puedes hacer esto:

Código SQL:
Ver original
  1. SELECT pais,isnull([1996],0) AS [1996],isnull([1997],0) AS [1997],isnull([1998],0) AS [1998]
  2. FROM (
  3. SELECT o.ShipCountry Pais,
  4. CASE WHEN datepart(yyyy,o.OrderDate)=1996 THEN SUM(od.UnitPrice*od.Quantity) END AS [1996],
  5. CASE WHEN datepart(yyyy,o.OrderDate)=1997 THEN SUM(od.UnitPrice*od.Quantity) END AS [1997],
  6. CASE WHEN datepart(yyyy,o.OrderDate)=1998 THEN SUM(od.UnitPrice*od.Quantity) END AS [1998]
  7.  
  8.     FROM [ORDER Details] od
  9.     INNER JOIN Orders o ON o.OrderID=od.OrderID
  10.     GROUP BY o.ShipCountry,YEAR(o.OrderDate)
  11. ) AS t1
Excelente me convirtio los null a 0, pero si quiero por ejemplo que me aparezca de esta forma.



Sin que aparezcan los 0 por ejemplo hay alguna manera de que eso salga.

De antemano muchas gracias ya voy entendiendo mejor.
  #17 (permalink)  
Antiguo 19/11/2013, 21:27
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Consulta en northwind

si hay valores entonces aparecera valor si no entonces no....si hay valores por eso te pido un ejemplo de tus datos para poder ayudarte mejor :P
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #18 (permalink)  
Antiguo 20/11/2013, 09:09
 
Fecha de Ingreso: noviembre-2013
Mensajes: 28
Antigüedad: 10 años, 5 meses
Puntos: 0
Respuesta: Consulta en northwind

Cita:
Iniciado por Libras Ver Mensaje
si hay valores entonces aparecera valor si no entonces no....si hay valores por eso te pido un ejemplo de tus datos para poder ayudarte mejor :P
Con ejemplo te refieres a esto:

  #19 (permalink)  
Antiguo 20/11/2013, 09:32
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Consulta en northwind

me referia a los valores de las tablas details y orders......para saber como se estan generando los datos
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #20 (permalink)  
Antiguo 21/11/2013, 08:37
 
Fecha de Ingreso: noviembre-2013
Mensajes: 28
Antigüedad: 10 años, 5 meses
Puntos: 0
Respuesta: Consulta en northwind

Cita:
Iniciado por Libras Ver Mensaje
me referia a los valores de las tablas details y orders......para saber como se estan generando los datos
Te refieres a las columnas aca estan



  #21 (permalink)  
Antiguo 21/11/2013, 08:45
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Consulta en northwind

amigo valores, datos lo que quiero es que me des un ejemplo de tu tabla,

algo asi

tabla 1
dato1 dato2 dato3
1 yo 01/01/2000
2 tu 01/01/2000
3 el 01/01/2000

La estructura de la tabla para que me sirve??? o en su defecto explica mejor tu requerimiento
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #22 (permalink)  
Antiguo 21/11/2013, 08:55
 
Fecha de Ingreso: noviembre-2013
Mensajes: 28
Antigüedad: 10 años, 5 meses
Puntos: 0
Respuesta: Consulta en northwind

Cita:
Iniciado por Libras Ver Mensaje
amigo valores, datos lo que quiero es que me des un ejemplo de tu tabla,

algo asi

tabla 1
dato1 dato2 dato3
1 yo 01/01/2000
2 tu 01/01/2000
3 el 01/01/2000

La estructura de la tabla para que me sirve??? o en su defecto explica mejor tu requerimiento
ESTA ES LA ESTRUCTURA DE ORDER




La de aca de ORDERDETAILS

  #23 (permalink)  
Antiguo 21/11/2013, 08:58
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Consulta en northwind

ok ya un poco mas claro, ahora lo que quieres es????
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #24 (permalink)  
Antiguo 21/11/2013, 09:09
 
Fecha de Ingreso: noviembre-2013
Mensajes: 28
Antigüedad: 10 años, 5 meses
Puntos: 0
Respuesta: Consulta en northwind

Quiero mostrar el monto (UnitPrice*Quantity) por año de esta forma o con esta estructura

PAIS - 1996 - 1997 - 1998
1 France - 17589 - 14856 - 78945

No se si soy claro o con esta imagen me explico mejor



La parte sombreada de rojo seria el monto (UnitPrice*Quantity) de todo el año en este caso el año 1998 y como ves el pais es francia lo quiero mostrar de esa manera.

Pero me sale de esta.




Es decir, por ejemplo en Norwai me deberia votar los montos los tres juntos para los tres años. y asi en todos los paises.
  #25 (permalink)  
Antiguo 21/11/2013, 09:29
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Consulta en northwind

Código SQL:
Ver original
  1. SELECT isnull(SUM([1996]),0) AS [1996],isnull(SUM([1997]),0) AS [1997],isnull(SUM([1998]),0) AS [1998],shipcountry FROM
  2. (
  3.     SELECT
  4.     CASE WHEN datepart(yyyy,OrderDate)=1996 THEN SUM(total) END AS [1996],
  5.     CASE WHEN datepart(yyyy,OrderDate)=1997 THEN SUM(total) END AS [1997],
  6.     CASE WHEN datepart(yyyy,OrderDate)=1998 THEN SUM(total) END AS [1998],
  7.     ShipCountry
  8.      FROM(
  9.     SELECT
  10.     OrderDate,(UnitPrice * Quantity) AS total, ShipCountry
  11.      FROM [ORDER Details] AS t1
  12.     LEFT JOIN Orders AS t2 ON (t1.OrderID=t2.OrderID)
  13.     ) AS t1
  14.     GROUP BY ShipCountry,orderdate
  15. ) AS t2 GROUP BY ShipCountry

saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #26 (permalink)  
Antiguo 21/11/2013, 09:48
 
Fecha de Ingreso: noviembre-2013
Mensajes: 28
Antigüedad: 10 años, 5 meses
Puntos: 0
Respuesta: Consulta en northwind

Cita:
Iniciado por Libras Ver Mensaje
Código SQL:
Ver original
  1. SELECT isnull(SUM([1996]),0) AS [1996],isnull(SUM([1997]),0) AS [1997],isnull(SUM([1998]),0) AS [1998],shipcountry FROM
  2. (
  3.     SELECT
  4.     CASE WHEN datepart(yyyy,OrderDate)=1996 THEN SUM(total) END AS [1996],
  5.     CASE WHEN datepart(yyyy,OrderDate)=1997 THEN SUM(total) END AS [1997],
  6.     CASE WHEN datepart(yyyy,OrderDate)=1998 THEN SUM(total) END AS [1998],
  7.     ShipCountry
  8.      FROM(
  9.     SELECT
  10.     OrderDate,(UnitPrice * Quantity) AS total, ShipCountry
  11.      FROM [ORDER Details] AS t1
  12.     LEFT JOIN Orders AS t2 ON (t1.OrderID=t2.OrderID)
  13.     ) AS t1
  14.     GROUP BY ShipCountry,orderdate
  15. ) AS t2 GROUP BY ShipCountry

saludos!

*.* EXCELENTE

Muchas gracias te pasaste me gane esos puntasos eran 3 ahora el profe a dejado otro de esta manera. SON 7 PTS



Es decir que me vote el monto de enero de 1996, febrero de 1996 y asi sucesivamente se q debo variar solo esto

Código SQL:
Ver original
  1. CASE WHEN datepart(yyyy,campo_fecha)=1996 THEN SUM(od.UnitPrice*od.Quantity) END AS [1996],

Y hacer un case para cada mes pero de que forma especifico en el datepart para que sea por ejemplo solo enero de 1996
  #27 (permalink)  
Antiguo 21/11/2013, 09:57
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Consulta en northwind

Algo asi :)

Código SQL:
Ver original
  1. SELECT isnull(SUM([1996-7]),0) AS [1996-Julio],isnull(SUM([1996-8]),0) AS [1996-Agosto],isnull(SUM([1996-9]),0) AS [1996-Septiembre],isnull(SUM([1996-10]),0) AS [1996-Octubre],isnull(SUM([1996-11]),0) AS [1996-Noviembre],isnull(SUM([1996-12]),0) AS [1996-Diciembre],isnull(SUM([1997]),0) AS [1997],isnull(SUM([1998]),0) AS [1998],shipcountry FROM
  2. (
  3.     SELECT
  4.     CASE WHEN datepart(yyyy,OrderDate)=1996 AND datepart(mm,orderdate)=7 THEN SUM(total) END AS [1996-7],
  5.     CASE WHEN datepart(yyyy,OrderDate)=1996 AND datepart(mm,orderdate)=8 THEN SUM(total) END AS [1996-8],
  6.     CASE WHEN datepart(yyyy,OrderDate)=1996 AND datepart(mm,orderdate)=9 THEN SUM(total) END AS [1996-9],
  7.     CASE WHEN datepart(yyyy,OrderDate)=1996 AND datepart(mm,orderdate)=10 THEN SUM(total) END AS [1996-10],
  8.     CASE WHEN datepart(yyyy,OrderDate)=1996 AND datepart(mm,orderdate)=11 THEN SUM(total) END AS [1996-11],
  9.     CASE WHEN datepart(yyyy,OrderDate)=1996 AND datepart(mm,orderdate)=12 THEN SUM(total) END AS [1996-12],
  10.     CASE WHEN datepart(yyyy,OrderDate)=1997 THEN SUM(total) END AS [1997],
  11.     CASE WHEN datepart(yyyy,OrderDate)=1998 THEN SUM(total) END AS [1998],
  12.     ShipCountry
  13.      FROM(
  14.     SELECT
  15.     OrderDate,(UnitPrice * Quantity) AS total, ShipCountry
  16.      FROM [ORDER Details] AS t1
  17.     LEFT JOIN Orders AS t2 ON (t1.OrderID=t2.OrderID)
  18.     --where shipcountry='Argentina'
  19.     --group by OrderDate
  20.     ) AS t1
  21.     GROUP BY ShipCountry,orderdate
  22. ) AS t2 GROUP BY ShipCountry

saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #28 (permalink)  
Antiguo 21/11/2013, 10:19
 
Fecha de Ingreso: noviembre-2013
Mensajes: 28
Antigüedad: 10 años, 5 meses
Puntos: 0
Respuesta: Consulta en northwind

EXCELENTE

Muchas gracias te pasaste ahora a presentarlo ;)
  #29 (permalink)  
Antiguo 21/11/2013, 10:29
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Consulta en northwind

De nada un placer, y para la siguiente vez trata de explicarte mejor que tuve que bajar la base de datos de northwind para poder entender que querias :S
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #30 (permalink)  
Antiguo 22/11/2013, 08:43
 
Fecha de Ingreso: noviembre-2013
Mensajes: 28
Antigüedad: 10 años, 5 meses
Puntos: 0
Respuesta: Consulta en northwind

Cita:
Iniciado por Libras Ver Mensaje
De nada un placer, y para la siguiente vez trata de explicarte mejor que tuve que bajar la base de datos de northwind para poder entender que querias :S
Te agradesco y admiro tu capacidad y la paciencia que has tenido, pero te molesto una ves mas mira.

Código SQL:
Ver original
  1. ALTER FUNCTION m_ventaPtos(@pais VARCHAR(500))
  2. RETURNS @monto TABLE (Pais VARCHAR(500),[1996] INT,[1997] INT,[1998] INT)
  3. AS
  4. BEGIN
  5.     INSERT @monto
  6.     SELECT shipcountry AS PAIS, isnull(SUM([1996]),0) AS [1996],isnull(SUM([1997]),0) AS [1997],isnull(SUM([1998]),0) AS [1998] FROM
  7. (
  8.     SELECT
  9.     CASE WHEN datepart(yyyy,OrderDate)=1996 THEN SUM(total) END AS [1996],
  10.     CASE WHEN datepart(yyyy,OrderDate)=1997 THEN SUM(total) END AS [1997],
  11.     CASE WHEN datepart(yyyy,OrderDate)=1998 THEN SUM(total) END AS [1998],
  12.     ShipCountry
  13.      FROM(
  14.     SELECT
  15.     OrderDate,(UnitPrice * Quantity) AS total, ShipCountry
  16.      FROM [ORDER Details] AS t1
  17.     LEFT JOIN Orders AS t2 ON (t1.OrderID=t2.OrderID)
  18.     ) AS t1
  19.     GROUP BY ShipCountry,orderdate
  20. ) AS t2 GROUP BY ShipCountry
  21.     RETURN
  22. END

La funcion esta EXCELENTE hace los que yo quiero. Me devuelve esto de resultado.



Pero yo quiero que los resultados (montos) esten en decimales como esta aqui



Ese me sale de esa forma por que solo ejecute la consulta sola fuera de la FUNCION ESCALAR.

Etiquetas: sql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:29.