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

Query no agrupa

Estas en el tema de Query no agrupa en el foro de Oracle en Foros del Web. @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código SQL: Ver original SELECT         "SDLITM" AS "Codigo1" ,         "SDAITM" AS "Codigo2" ,     ...
  #1 (permalink)  
Antiguo 01/05/2013, 17:40
Avatar de YeisonSoto  
Fecha de Ingreso: enero-2011
Ubicación: Cali, Colombia, Colombia
Mensajes: 116
Antigüedad: 13 años, 2 meses
Puntos: 4
Query no agrupa

Código SQL:
Ver original
  1. SELECT
  2.        "SDLITM" AS "Codigo1",
  3.        "SDAITM" AS "Codigo2",
  4.        "SDDSC1" AS "Producto",
  5.        "SDMCU" AS "Bodega",
  6.        "DRDL01" AS "N_Vendedor",  
  7.        SUM(sdsoqs) AS "Cantidad",
  8.        SUM(sduprc) AS "PrecioU",
  9.        SUM(SDAEXP) AS "Valor",
  10.        SUM(sduncs) AS "CostoU",
  11.        SUM(sdecst) AS "Costo",  
  12.        "IMALN" AS "IMALN",
  13.        "IMSRP1" AS "IMSRP1",
  14.        "IMSRP2" AS "Clasificacion2",
  15.        "IMSRP3" AS "Clasificacion3",
  16.        "IMSRP4" AS "Clasificacion4",
  17.        "IMSRP5" AS "Clasificacion5",
  18.        "IMSRP6" AS "Clasificacion6",
  19.        "IMSRP7" AS "Clasificacion7",
  20.        "IMSRP8" AS "Marca",
  21.        "IMSRP0" AS "Presentacion",
  22.        --"SDDOC" as "DOCUMENTO",
  23.        "SDDCT" AS "TIPO",
  24.        "SDUOM" AS "Unidad",
  25.        "SDCRCD" AS "Moneda",
  26.        SUM("SDAEXP"/100-"SDECST"/100) AS "UTILIDAD_B",
  27.         CASE
  28.                WHEN  "SDECST" = 0 THEN 0
  29.                ELSE  (SUM("SDAEXP"/100)/SUM("SDECST"/100) -1)*100
  30.         END "MARGEN",
  31.        "ABAN8" AS "ABAN8",
  32.        "ABALPH" AS "Cliente",
  33.        "ABAC09" AS "C_Vendedor",
  34.        "MCRP22" AS "Establecimiento"
  35. FROM PRUEBAVENTAS
  36. GROUP BY "SDDSC1",
  37.          "SDLITM",
  38.          "SDAITM",
  39.          "SDDSC1",
  40.          "SDMCU",
  41.          "DRDL01",
  42.          "IMALN",
  43.          "IMSRP1",
  44.          "IMSRP2",
  45.          "IMSRP3",
  46.          "IMSRP4",
  47.          "IMSRP5",
  48.          "IMSRP6",
  49.          "IMSRP7",
  50.          "IMSRP8",
  51.          "IMSRP0",
  52.          -- "SDDOC",
  53.            "SDDCT",
  54.            "SDUOM",
  55.            "SDCRCD",
  56.          --"SDECST",
  57.          "ABAN8",
  58.            "ABALPH",
  59.          "ABAC09",
  60.          "MCRP22"


El inconveniente está en esta seccion de codigo:


Código SQL:
Ver original
  1. CASE
  2.     WHEN "SDECST" = 0 THEN 0
  3.     ELSE (SUM("F42119"."SDAEXP"/100)/SUM("F42119"."SDECST"/100) -1)*100
  4. END "MARGEN",

En el WHEN, cuando COSTO (SDECST) sea igual a 0 debo mostrar 0, ahí es donde aparece el problema al no estar aplicando ninguna funcion de agrupacion debo incluir SDECST en el GROUP y al tener este valores diferentes no me agrupa los productos.

Como puedo hacer el WHEN "SDECST" = 0 THEN 0 si necesidad de incluir "SDECST en el GROUP BY?, ya que esto daña mi consulta.

http://squadronsuicida.webs.com/imag...-%20copia.xlsx
  #2 (permalink)  
Antiguo 12/06/2013, 13:50
 
Fecha de Ingreso: noviembre-2007
Ubicación: Argentina
Mensajes: 134
Antigüedad: 16 años, 5 meses
Puntos: 3
Respuesta: Query no agrupa

Te paso el siguiente ejemplo:

Tabla_Apertura contiene Columna_Numerador y Columna Denominador

Aplico lo siguiente, un decode:

SELECT COLUMNA_NUM, COLUMN_DEN,
DECODE(COLUMN_DEN, 0, 0, COLUMN_NUM / COLUMN_DEN) FORMULA
FROM TABLA_APERTURA

El decode pregunta: El denominador es cero? Si es cero, lo pongo cero, sino que aplique el cociente.

Y de esta manera, no te va a dar error.

Exitos !!!
Saludos, Mario.
__________________
Y venció David al filisteo con honda y piedra; e hirió al filisteo y lo mató, sin tener David espada en su mano.

Etiquetas: group-by
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 13:38.