none
Agregar contador a una columna SQL SERVER RRS feed

  • Pregunta

  • Tengo una duda


    Esta imagen fue creada en c# y lo que estoy realizando es un query en SQL SERVER
    el query es el siguiente 

    Lo que necesito llenar es en el datagridview en la columna No. manifiesto como un contador por cada registro que estoy buscando y que ese contador con la informacion que ya busque y encontre por ejemplo

    No. Manifiesto      Nombre                           Calle          # Perfil             
    SYR-000001        Resiclaje S.A DE C.V        Modulos      32043204
    SYR-000002        Millan Roberto Manuel        Otay         35463546

     

    Y que cuando vuelva hacer otra busqueda diferente El numero de manifiesto sea SRY-000003 etc... susesivamente..

    Me podrian ayudar!
     

    domingo, 7 de abril de 2019 6:10

Respuestas

  • Hola Oscar956:

    Si esa búsqueda es persistente, quiero decir que cuando vuelvas a ejecutar tu programa tiene que ser la syr-000004, entonces, tendrás que alimentarte de una tabla búsquedas o de una secuencia.

    Te expongo un ejemplo (Sql Server 2012 o superior)

    CREATE SEQUENCE dbo.SECUENCIABUSQUEDAS
        AS INT
        START WITH 1
        INCREMENT BY 1
        MINVALUE 1
        MAXVALUE 999999;

    GO CREATE TABLE CPA (NOMBRE VARCHAR (100), CALLE VARCHAR(100), CLIENTE INT) GO CREATE TABLE PERFIL (CLIENTE INT, [#DE PERFIL] INT) GO CREATE TABLE CPT (CLIENTE INT, RUTAID INT) GO CREATE TABLE RUTAS (RUTAID INT, DESCRIPCION VARCHAR(100)) GO INSERT INTO CPA (NOMBRE, CALLE, CLIENTE) VALUES ('Resiclaje S.A DE C.V','Modulos',1), ('Millan Roberto Manuel','Otay',2); GO INSERT INTO PERFIL (CLIENTE, [#DE PERFIL]) VALUES (1,32043204), (2,35463546); GO INSERT INTO CPT (CLIENTE, RUTAID) VALUES (1,1), (2,2); GO INSERT INTO RUTAS (RUTAID, DESCRIPCION) VALUES (1,'DESCRIPCION'), (2,'DESCRIPCION2'); GO

    Hasta aquí la única parte que te hace falta es el Create Sequence. El resto es un escenario parecido a lo que has pintado para que veas como funciona y como se implementa la Select.

    SELECT 'SYR-' + CAST( RIGHT((POWER(10,6)) + (NEXT VALUE FOR dbo.SECUENCIABUSQUEDAS),6) AS VARCHAR(6))
    , A.NOMBRE, A.CALLE, C.[#DE PERFIL], E.DESCRIPCION
    FROM CPA A
    INNER JOIN PERFIL C ON A.CLIENTE = C.CLIENTE
    INNER JOIN CPT D ON A.CLIENTE = D.CLIENTE
    INNER JOIN RUTAS E ON A.CLIENTE = D.CLIENTE

    La parte de la select tuya no la comento.

    De lo que hay en la primera fila:

    • Empiezo por la secuencia. NEXT VALUE FOR dbo.SequenciaBusquedas, cada vez que se invoque devolverá un valor númerico, empezando desde 1 incrementándose de 1 en 1 hasta llegar al máximo valor 999999, que se reiniciará. Puedes llegar al valor máximo de un int.
    • Power (10,6): Te devuelve 1000000
    • Right (....,6) te devuelve los ultimos seis digitos de 1000000+el numero de secuencia
    • Todo envuelto en un varchar(6)
    • Luego sumado tu cadena 'SYS-R'

    Cada vez que lo invoques irá sumando por cada row

    Salida

    domingo, 7 de abril de 2019 7:13