es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Contador: SQL: DB2

Tengo esta tabla:

| CÓDIGO | IDNR | NOMBRE | LIMITE   |
|------|------|------|-------|
| 123  |  80  | XXX  | 2019-05|
| 123  |  81  | XXX  | 2019-10|
| 124  |  80  | YYY  | 2019-01|
| 125  |  80  | ZZZ  | 2019-05|
| 125  |  81  | ZZZ  | 2019-06|
| 125  |  80  | ZZZ  | 2019-07|
| 126  |  80  | III  | 2019-05|
| 126  |  80  | III  | 2019-09|
| 126  |  80  | III  | 2019-07|

Quiero tener una nueva columna (Cont-Límite) que contenga cuántos LÍMITES hay por código y otra que contenga SÍ si los LÍMITES son continuos y NO si no lo son.

MI RESULTADO que deseo sería:

| CÓDIGO | IDNR | NOMBRE | LIMITE   |     Cont-Límite   | CON|
|------|------|------|---------|-------------------|----|
| 123  |  80  | XXX  | 2019-05 |       2           |  NO|
| 123  |  81  | XXX  | 2019-10 |       2           |  NO|
| 124  |  80  | YYY  | 2019-01 |       1           |  NO|
| 125  |  80  | ZZZ  | 2019-05 |       3           |  SÍ|
| 125  |  81  | ZZZ  | 2019-06 |       3           |  SÍ|
| 125  |  80  | ZZZ  | 2019-07 |       3           |  SÍ|
| 126  |  80  | III  | 2019-05 |       3           |   NO|
| 126  |  80  | III  | 2019-09 |       3           | NO|
| 126  |  80  | III  | 2019-07 |       3           | NO|

¡GRACIAS!

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para obtener el resultado deseado, puedes utilizar la siguiente consulta SQL:

    SELECT 
      CODE,
      IDNR,
      NAME,
      LIMIT,
      COUNT(*) OVER (PARTITION BY CODE) AS "Count-Limit",
      CASE 
         WHEN LEAD(LIMIT) OVER (PARTITION BY CODE ORDER BY LIMIT) = DATEADD(month, 1, LIMIT) 
              AND LAG(LIMIT) OVER (PARTITION BY CODE ORDER BY LIMIT) = DATEADD(month, -1, LIMIT) 
              THEN 'YES' 
              ELSE 'NO' 
      END AS "CON"
    FROM nombre_de_tu_tabla;
    

    Aquí, estamos utilizando la función COUNT(*) OVER (PARTITION BY CODE) para contar el número de LIMIT por código. Además, estamos utilizando las funciones LEAD() y LAG() para verificar si los LIMITs son continuos. Si los LIMITs son continuos, lo marcamos como “YES”, de lo contrario “NO”.

    Nota: Reemplaza “nombre_de_tu_tabla” con el nombre real de tu tabla.

Comments are closed.