locked
Diseño del modelo de datos RRS feed

  • Pregunta

  • Hola a todos!

    Tengo la siguiente tabla de números de cuentas contables:

    NºCuenta Descripción Area
    64200000 Texto1 A1
    63100000 Texto2 A1
    75500000 Texto3 A2
    60200000 Texto4 A3
    60500000 Texto5 A2

    Esta tabla se aplica para las cuentas pertenecientes a movimientos del 2017 o anteriores (<=2017). A partir del año 2018 (>=2018), la tabla tendrá estos valores diferentes del Area:

    NºCuenta Descripción Area
    64200000 Texto1 A1
    63100000 Texto2 A1
    75500000 Texto3 A2
    60200000 Texto4 A2
    60500000 Texto5 A2

    ¿Cómo puedo hacer para que, cuando quiera filtrar por un año y un área, aplique y sume los importes de los números de las cuentas correspondientes en cada periodo?

    Es decir, que si tengo esta tabla de movimientos:

    Mov NºCuenta Año       Importe
    1 64200000 2017 100
    2 64200000 2017 50
    3 75500000 2017 25
    4 60200000 2017 5
    5 60500000 2017 10
    6 64200000 2018 15
    7 75500000 2018 20
    8 60500000 2018 20
    9 60500000 2018 50
    10 60200000 2018 100

    Muestre estos resultados:

    Muchas gracias

    martes, 14 de agosto de 2018 10:08

Respuestas

  • Al parecer necesitarias una tabla para la asignacion de area, cuenta y periodo.

    T(Area, Desde, Hasta, Cuenta)

    Pudiera simplificarse con solo el anio si la asignacion es aplicable a un anio por completo. Si la descripcion de la cuenta varia en dependencia del anio y area a la que soporata entonces agrega la descripcion.

    T(Area, Anio, Cuenta)

    select
        T.area, T.anio, sum(importe) as sum_importe
    from
        movimientos as M
        inner join T
        on T.anio = M.anio and T.area = M.area
    group by
        T.cuenta, T.anio;

    Me pregunto si tienes una tabla para las areas.


    AMB

    Some guidelines for posting questions...

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

    martes, 14 de agosto de 2018 11:53
  • *****

    Creo que habría que encontrar la manera de relacionar las Areas con las Cuentas y los Años y solamente especificar los cambios de áreas, es decir, que si de las 1000 cuentas solo cambian de área 3 para un determinado año, que solamente se tenga que configurar esos cambios.

    *****

    Como sabes que hubo un cambio si no tienes contra que comparar. Si no haces la asignacion de forma materializada, tarde o temprano te veraz haciendola en el codigo.

    - Cual es la asignacion inicial?

    - Cuantos anios han pasado desde la primera asignacion area / anio / cuenta?

    - Que pasa si no hay entradas en la tabla movimientos para un anio / area / cuenta en especifico?

    - Como saber que una asignacion cambio y contra que comprobar?

    Todas esas preguntas tendras que contestarlas al vuelo y en cada codigo que lo nesecite.

    Areas()
    Cuentas()
    Anios()
    AsignacionAnual(AreaID, CuentaID, Anio)

    No he incluido testricciones de unicidad y/o clave primaria sin saber que una cuenta pudiera afectar multiples areas, etc.


    AMB

    Some guidelines for posting questions...

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

    martes, 14 de agosto de 2018 15:32

Todas las respuestas

  • Al parecer necesitarias una tabla para la asignacion de area, cuenta y periodo.

    T(Area, Desde, Hasta, Cuenta)

    Pudiera simplificarse con solo el anio si la asignacion es aplicable a un anio por completo. Si la descripcion de la cuenta varia en dependencia del anio y area a la que soporata entonces agrega la descripcion.

    T(Area, Anio, Cuenta)

    select
        T.area, T.anio, sum(importe) as sum_importe
    from
        movimientos as M
        inner join T
        on T.anio = M.anio and T.area = M.area
    group by
        T.cuenta, T.anio;

    Me pregunto si tienes una tabla para las areas.


    AMB

    Some guidelines for posting questions...

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

    martes, 14 de agosto de 2018 11:53
  • Hola Hunchback y gracias por tu respuesta,

    Si tengo una tabla para las Areas pero tu solución no me parece adecuada, me explico: en la tabla de Cuentas contables, tengo 1000 registros, cada uno con un número de cuenta diferente. En la tabla de Areas tengo 12 áreas y los años van del 2012 hasta la actualidad y los que vengan. Si tengo que crear la tabla que comentas, tendré que repetir los 1000 registros de cuentas por los diferentes años y asignarles su área para cada año y eso, no lo veo adecuado.

    Creo que habría que encontrar la manera de relacionar las Areas con las Cuentas y los Años y solamente especificar los cambios de áreas, es decir, que si de las 1000 cuentas solo cambian de área 3 para un determinado año, que solamente se tenga que configurar esos cambios. No se si me explico o si es posible lo que comento.

    Gracias.



    • Editado raulsang martes, 14 de agosto de 2018 13:49
    martes, 14 de agosto de 2018 13:49
  • *****

    Creo que habría que encontrar la manera de relacionar las Areas con las Cuentas y los Años y solamente especificar los cambios de áreas, es decir, que si de las 1000 cuentas solo cambian de área 3 para un determinado año, que solamente se tenga que configurar esos cambios.

    *****

    Como sabes que hubo un cambio si no tienes contra que comparar. Si no haces la asignacion de forma materializada, tarde o temprano te veraz haciendola en el codigo.

    - Cual es la asignacion inicial?

    - Cuantos anios han pasado desde la primera asignacion area / anio / cuenta?

    - Que pasa si no hay entradas en la tabla movimientos para un anio / area / cuenta en especifico?

    - Como saber que una asignacion cambio y contra que comprobar?

    Todas esas preguntas tendras que contestarlas al vuelo y en cada codigo que lo nesecite.

    Areas()
    Cuentas()
    Anios()
    AsignacionAnual(AreaID, CuentaID, Anio)

    No he incluido testricciones de unicidad y/o clave primaria sin saber que una cuenta pudiera afectar multiples areas, etc.


    AMB

    Some guidelines for posting questions...

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

    martes, 14 de agosto de 2018 15:32