none
Consultas Con filtros RRS feed

  • Pregunta

  • Buenos dias 

    Tengo una tabla con las siguiente estructura:

    Pk_Identity

    userName

    operation

    id

    date

    Como puedo realizar una consulta con diferentes filtros o sea que pueda buscar por userName , id , date  u operation  y las combinaciones. Pero los campos puede ir vacios, me explico digamos que el cliente quiere buscar solo por userName  y operation entonces el campo id y date deben ir vacios porque no se requiere buscar por estos filtros.

    Tengo este query pero no me funciona porque al ingresar un campo vacio en cualquiera de los filtros no me trae nada.

    SELECT  * FROM  [idHistoryAudit] WHERE (( [userName] = 'felipe'  OR [userName] IS NOT NULL)  AND ([operation] = 'update') AND ([date] >= '10/18/2016' AND [date] <= '10/20/2016'))


    Felipe Hurtado Developer


    viernes, 21 de octubre de 2016 12:56

Respuestas

  • Deberas crear parametros que puedan aceptar la marca NULL y construir una consulta que indague cuando el valor del parametro sea la marca NULL para excluir el filtro.

    -- opcion 1
    SELECT
    	col1,...,coln 
    FROM 
    	[idHistoryAudit] 
    WHERE
    	([userName] = @username OR @userName IS NULL)  
    	AND ([operation] = @operacion OR @operacion IS NULL) 
    	AND ([date] >= ISNULL(@sdt, '19000101') AND [date] <= ISNULL(@edt, '99991231'))
    OPTION (RECOMPILE);
    
    -- opcion 2
    SELECT
    	col1,...,coln 
    FROM 
    	[idHistoryAudit] 
    WHERE
    	([userName] = @username OR @userName IS NULL)  
    	AND ([operation] = @operacion OR @operacion IS NULL) 
    	AND (([date] >= @sdt OR @sdt IS NULL) AND ([date] <= @edt OR @edt IS NULL))
    OPTION (RECOMPILE);

    Aqui te dejo un articulo estupendo sobre busquesdas dinamicas en T-SQL.

    http://www.sommarskog.se/dyn-search.html


    AMB

    Some guidelines for posting questions...

    AYÚDANOS A AYUDARTE, guía básica de consejos para formular preguntas


    • Editado HunchbackMVP viernes, 21 de octubre de 2016 15:21
    • Marcado como respuesta Felipe Hurtado viernes, 21 de octubre de 2016 20:36
    viernes, 21 de octubre de 2016 15:18

Todas las respuestas