No, UPDATE en SQL Server CE es muy "restrictivo" respecto a la sintaxis permitida, de hecho la expresión que puedes asignar a la columna que deseas modificar te exige sea un valor simple, un valor escalar.
¿Qué hacer?, según recuerdo ya habías tenido el mismo inconveniente meses atrás y la forma como lo resolviste es la misma que te propondré ahora (salvo exista otra forma): recupera las filas a afectar, itera y actualiza uno a uno, es "horrible" el método, lo sé, pero imagino analizaste desde un inicio las restricciones de SQL Server CE antes de tomarla como solución.
- Consulta de selección:
SELECT c1.Cód_GC, SUM(c2.SaldoUnificado) FROM ImportacionDatos c1 INNER JOIN ImportacionDatos c2 ON (LEFT(c2.Cód_GC, 3) = c1.Cód_GC) GROUP BY c1.Cód_GC
Prueba desde tu editor de consultas de SQL Server CE si la consulta retorna los valores a afectar, de ser así ejecuta la misma desde tu aplicación, itera y actualiza.
- Código de aplicación
Dim ConsultaSQL = "SELECT..." 'La consulta que escribí líneas arriba Dim da As New SqlCeDataAdapter(ConsultaSQL, cnn) Dim dt As New DataTable 'Rellenar una instancia de la clase DataTable con las filas 'que recupera la consulta de selección da.Fill(dt) 'Definir la consulta sql de actualización Dim SQLActualizacion = "UPDATE ImportacionDatos SET SaldoUnificado = @SaldoUnificado WHERE Cód_GC = @Cod" 'Iterar por la colección de filas For Each Fila As DataRow In dt.Rows Dim Comando As New SqlCeCommand(SQLActualizacion, cnn) Comando.Parameters.AddWithValue("@SaldoUnificado", Fila(1)) Comando.Parameters.AddWithValue("@Cod", Fila(0)) Comando.ExecuteNonQuery() Next
Sobre el ejemplo, si tienes la manera de guardar las operaciones como una única transacción agrégalas al ejemplo.
Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.