Hacer referencia a otras filas en el conjunto de resultados para determinar si se muestra una fila

Un usuario Pregunto ✅

Budfudder

Tengo una tabla de Cuentas y otra tabla de Arrendamientos. No vendemos nuestro producto; puede arrendarlo por un año a la vez. En la tabla Arrendamientos, registramos esos arrendamientos y cada fila tiene un enlace a la tabla Cuenta. Por tanto, para una cuenta determinada, podría haber cualquier número de filas en la tabla Arrendamientos. Y, por supuesto, para algunas Cuentas no hay filas en la tabla Arrendamientos; son Cuentas que nunca nos han arrendado un producto.

Los arrendamientos pueden tener varios estados: Activo, Caducado, Inactivo (cuando el cliente entrega el producto antes de tiempo), etc.

Tengo una tabla visual en Power BI que muestra una lista completa de todas las cuentas y, para cada cuenta, cada arrendamiento. Por lo tanto, hay varias filas para algunas cuentas, con una fila para cada arrendamiento asociado con la cuenta. Tengo segmentaciones para que los usuarios puedan elegir mostrar solo los arrendamientos activos o solo los arrendamientos vencidos, etc. Entonces, si, para una cuenta en particular, existe el contrato de arrendamiento de este año (Activo) y el contrato de arrendamiento del año pasado (Vencido), esa Cuenta se mostrará si elijo la opción de segmentación ‘Activa’ o la opción de segmentación ‘Caducada’, cada vez que solo muestra el arrendamiento que cumpla con los criterios de segmentación.

Eso está muy bien. Pero ahora el usuario ha dicho que quiere tener una segmentación que les muestre todas las Cuentas que no tienen arrendamientos, y otra segmentación que les mostrará todas las Cuentas que no tienen arrendamientos activos. Y ahí es donde encuentro problemas.

El que muestra todas las cuentas que no tienen arrendamientos es fácil: solo habrá una fila para dicha cuenta, por lo que puedo filtrar si el ID de arrendamiento para una fila es nulo o no.

Pero, ¿cómo puedo hacer la cortadora de cuentas que no tienen arrendamientos activos? Puedo decir ‘muéstrame filas donde no hay arrendamiento o el arrendamiento no está activo’, pero todo lo que haré es eliminar del conjunto de resultados los arrendamientos actuales; todavía mostrará las cuentas que tienen arrendamientos actuales siempre que también tienen algunos arrendamientos vencidos (solo mostrará las filas que contienen esos arrendamientos vencidos, no las filas que contienen los arrendamientos actuales). Eso lleva al título del hilo. ¿Hay alguna forma de ver otras filas y decidió mostrarlas o no en función de si otras filas contienen algún valor? Algo como:

FOR (each row in the result set)
    IF (any other row in the result set has the same Account ID as this row and contains a current lease)
        Do not show this row
    ELSE
        Show this row
    END IF
END FOR

rajendran

Creo que puede usar ALLEXCEPT (ID de cuenta) para derivar la lógica.

Gracias
Raj

Hola @Budfudder

No estoy claro con su declaración, según lo probado, creo que al seleccionar «sin arrendamiento activo» en una cortadora, se mostrarían las filas en las que «sin arrendamiento activo» es 1. ¿Es mi entendimiento correcto?

¿Podría darme ejemplos para comprender sus requisitos?

cuenta arrendamientos estados fecha sin arrendamientos activos
A 1 Activo 1/1/2017
A 2 Caducado 03/12/2017 1
A 3 Inactivo 03/04/2017 1
A 5 Activo 1/1/2018
B 1 Activo 1/3/2018
B 2 Activo 1/1/2017
B 3 Caducado 03/12/2017 1
B 4 Inactivo 03/04/2017 1
C 1 Activo 1/1/2017
C 2 Caducado 03/12/2017 1
D 1 Inactivo 03/04/2017 1

Mejores Reagrds

Maggie

rajendran

Creo que puede usar ALLEXCEPT (ID de cuenta) para derivar la lógica.

Gracias
Raj

Budfudder

En respuesta a rajendran

Lo siento, pero ¿cómo? No veo cómo podría usarse de esa manera.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *