none
Clausula OVER no funciona con control Conjunto de datos(dataset) RRS feed

  • Pregunta

  • Estoy trabajando con Visual Studio 2017 y SQL Server 2017. Estoy creando un conjunto de datos  (dataset) y estoy estableciendo la siguiente sentencia SQL 

    SELECT ROW_NUMBER() OVER(ORDER BY SUM(mcm_debito-mcm_credito)) AS Saldo, mcm_comprador, Trim((com_razonsocial + ' ' + com_apellido1 + ' ' + com_apellido2 + ' ' + com_nombre1 + ' ' + com_nombre2)) AS Nombre,
    SUM(mcm_debito-mcm_credito) AS Saldo
    FROM movcomprador INNER JOIN comprador ON mcm_comprador = com_id 
    WHERE mcm_fecha <= '2019-08-06' 
    GROUP BY mcm_comprador, com_razonsocial, com_apellido1, com_apellido2, com_nombre1, com_nombre2 ORDER BY Nombre

    pero cuando la voy a ejecutar me saca el siguiente error

    La construcción o instrucción de SQL OVER no se admite.

    Alguien me puede dar una luz de como solucionar este problema. Lo necesito super U

    Muchas gracias.

    Reinel Gallego

    gallegorh@hotmail.com

    jueves, 22 de agosto de 2019 19:08

Todas las respuestas

  • Hola mr.programador:

    En la sentencia Sql tienes dos columnas Saldo, cambia el alias de la primera.

    var ConnectionString = @"Persist Security Info=False;Integrated Security=true;Initial Catalog=ejTres;Server=ESQUINERO";
    
    string sql = @"
    SELECT ROW_NUMBER() OVER(
           ORDER BY SUM(mcm_debito - mcm_credito)) AS Saldo, 
           mcm_comprador, 
           TRIM((com_razonsocial + ' ' + com_apellido1 + ' ' + com_apellido2 + ' ' + com_nombre1 + ' ' + com_nombre2)) AS Nombre, 
           SUM(mcm_debito - mcm_credito) AS Saldo
    FROM movcomprador
         INNER JOIN comprador ON mcm_comprador = com_id
    WHERE mcm_fecha <= '2019-08-06'
    GROUP BY mcm_comprador, 
             com_razonsocial, 
             com_apellido1, 
             com_apellido2, 
             com_nombre1, 
             com_nombre2
    ORDER BY Nombre;";
    
    DataSet ds = new DataSet();
    using (SqlConnection con = new SqlConnection(ConnectionString))
    {
        con.Open();
        
        
        SqlCommand cmd = new SqlCommand();
        cmd.Connection = con;
        cmd.CommandText = sql;
        cmd.CommandType = CommandType.Text;
        SqlDataAdapter da = new SqlDataAdapter(cmd);
        da.Fill(ds);
    }

    En Visual Studio 2012 vs Sql 2017 funciona correctamente. 

    Es posible que tengas algún que otro error en el código y no te este presentando el error correctamente.

    viernes, 23 de agosto de 2019 3:48