none
COMO PUEDO HACER PARA QUE LAS DESCRIPCIONES DUPLICADAS NO SE REPITAN RRS feed

  • Pregunta

  • Buenas Expertos,

    Estoy realizando un proyecto en sql server 2012

    Quisiera saber como puedo desarrollar una consulta con la cual si hay 2 descripciones repetidas no se generen los 2 los sino la primera,.... como es una vista la que tengo hay varias carpetas donde algunas descripciones son iguales no quisiera que se repita...

    por ejemplo:

    ID                DESCRIPCION

    1                  platano

    2                  manzana

    3                  pera

    4                  platano

    solo que me salga la primera descripción el otro que se borre de la vista. este es mi procedimiento pero solo me selecciona todo.

    IF OBJECT_ID ('SP_LISTADO_PRODUCTO') IS NOT NULL
    DROP PROC SP_LISTADO_PRODUCTO
    GO
    CREATE PROCEDURE SP_LISTADO_PRODUCTO
    AS
    SELECT CODIGO AS CODIGO_NUEVO, DESCRIPCION  FROM REPORTE_PRODUCTO
    GO

    Esta procedimiento almacenado solo me lista todo los productos de la vista que se llama "REPORTE_PRODUCTO". De antemano le agredesco la ayuda requerida. gracias

    martes, 28 de agosto de 2018 21:32

Respuestas

  • Hola, podría ser algo como

    SELECT * FROM REPORTE_PRODUCTO A
    WHERE A.CODIGO =(SELECT MIN(B.CODIGO) FROM REPORTE_PRODUCTO B
    WHERE    A.DESCRIPCION= B.DESCRIPCION ) 
    


    Votar es agradecer.
    Saludos.
    Lima-Perú

    miércoles, 29 de agosto de 2018 2:53
  • Hola Mario gr:

    IF OBJECT_ID ('SP_LISTADO_PRODUCTO') IS NOT NULL
    DROP PROC SP_LISTADO_PRODUCTO
    GO
    CREATE PROCEDURE SP_LISTADO_PRODUCTO
    AS
    
    select MIN(id)as codigo_nuevo, descripcion from reporte_producto
    group by descripcion
    order by codigo_nuevo
    
    return
    
    
    

    Un saludo

    miércoles, 29 de agosto de 2018 5:38
  • Hola mario gr:

    Te paso un link de una página donde explica la posible falta de eficacia del el operador like con '%BUSQUEDA%'

    para los distintos gestores de BBDD. Existen muchas páginas que indican esta posibilidad y no es una ciencia exacta, pero es una buena práctica intentar evitarlo.

    Un saludo

    • Marcado como respuesta mario gr viernes, 31 de agosto de 2018 13:02
    jueves, 30 de agosto de 2018 5:41

Todas las respuestas

  • Hola, podría ser algo como

    SELECT * FROM REPORTE_PRODUCTO A
    WHERE A.CODIGO =(SELECT MIN(B.CODIGO) FROM REPORTE_PRODUCTO B
    WHERE    A.DESCRIPCION= B.DESCRIPCION ) 
    


    Votar es agradecer.
    Saludos.
    Lima-Perú

    miércoles, 29 de agosto de 2018 2:53
  • Hola Mario gr:

    IF OBJECT_ID ('SP_LISTADO_PRODUCTO') IS NOT NULL
    DROP PROC SP_LISTADO_PRODUCTO
    GO
    CREATE PROCEDURE SP_LISTADO_PRODUCTO
    AS
    
    select MIN(id)as codigo_nuevo, descripcion from reporte_producto
    group by descripcion
    order by codigo_nuevo
    
    return
    
    
    

    Un saludo

    miércoles, 29 de agosto de 2018 5:38
  • hola Augusto, realice lo que me indicaste pero me sale igual las 2 descripciones .
    miércoles, 29 de agosto de 2018 13:21
  • hola Javi, realice lo que me indicaste y me sigue saliendo repetido las 2 filas con la misma descripcion 

    y si el codigo que es autogenerado tambien es el mismo

    miércoles, 29 de agosto de 2018 13:23
  • :D ,... yo tuve  una mala digitacion en un código les agradesco por su ayuda
    miércoles, 29 de agosto de 2018 13:31
  • Buenas antes de que cierren la pregunta, quiero filtrar ese procedimiento almacenado con la descripcion del producto me quedaría de esta forma:

    IF OBJECT_ID ('SP_LISTADO_PRODUCTO') IS NOT NULL

    DROP PROC SP_LISTADO_PRODUCTO
    GO
    CREATE PROCEDURE SP_LISTADO_PRODUCTO @DES VARCHAR(500)
    AS
    SELECT A.CODIGO AS CODIGO_NUEVO, A.DESCRIPCION  FROM REPORTE_PRODUCTO A

          WHERE A.DESCRIPCION LIKE '%'+@DES+'%'GROUP BY A.DESCRIPCION 

    ORDER BY A.CODIGO

    GO

    Me sale lo que requiero, porque aquí con el like me esta filtrando,.. solo queria saber si hay una mejor opcion . gracias.

    miércoles, 29 de agosto de 2018 15:16
  • Hola mario gr:

    Estas filtrando sobre una tabla. Es una opción fenomenal, para que te devuelva cualquier registro que contenga la cadena pasada como parámetro, por delante, en medio, o por detrás.

    Un saludo

    miércoles, 29 de agosto de 2018 15:20
  • Si fuera de varias tablas, es más recomendable, que no sea like '%'+@parametro sino like @parametro+'%'

    Digamos que no empiece por cualquier cosa, sino que sea tu parámetro, mas cualquier otra cosa. Pero en una tabla.... eso funciona genial.

    miércoles, 29 de agosto de 2018 15:22
  • hola javi, 

    REPORTE_PRODUCTO  es una vista creada que necesitaba unir de mas de 5 tablas con el union all

    por eso al inicio mi problema era que me salia el error de duplicado de descripcion gracias a su ayuda me salio perfecto pero ahora quiero filtrar en un texto mi datagrid con esa consulta me filtra pero veo un pequeña demora al llamar la consulta quisiera saber si hay una forma mejor de hacerla 

    me dices de esta forma : " que no sea like '%'+@parametro sino like @parametro+'%' " no se si me prodrias darme un ejemplo porfavor o una pagina que me recomiendes gracias por tu ayuda

    miércoles, 29 de agosto de 2018 15:37
  • Hola mario gr:

    Te paso un link de una página donde explica la posible falta de eficacia del el operador like con '%BUSQUEDA%'

    para los distintos gestores de BBDD. Existen muchas páginas que indican esta posibilidad y no es una ciencia exacta, pero es una buena práctica intentar evitarlo.

    Un saludo

    • Marcado como respuesta mario gr viernes, 31 de agosto de 2018 13:02
    jueves, 30 de agosto de 2018 5:41