Tag Archives: SQL

Clef NIR, Numéro d’Inscription au Répertoire

Voici une requête exemple qui peut vous permettre de calculer la clef NIR en SQL:

SELECT
CASE SUBSTR( NIR, 6, 2)
  WHEN '2B'
    THEN substr( DIGITS( 97 - MOD( CAST( SUBSTR( NIR, 1, 5) CONCAT '18'
         CONCAT SUBSTR( NIR, 8, 6) AS BIGINT ), 97)), 18, 2)
  WHEN '2A'
    THEN SUBSTR( DIGITS( 97 - MOD( CAST( SUBSTR( NIR, 1, 5)
         CONCAT '19' CONCAT SUBSTR( NIR, 8, 6) AS BIGINT), 97)), 18, 2)
  ELSE   SUBSTR( DIGITS( 97 - MOD( CAST( NIR AS BIGINT), 97)), 18, 2) END AS NIR_COMPLET

 

SQL DB2:NUMÉRIQUE en DATE

Souvent dans les fichiers (anciens), les dates sont stockées sous le format YYYYMMDD afin de les tester entre elles.

Mais depuis un certain temps déjà, sont apparues les formats DATE. Et en SQL, il n’y a pas de mot clef pour transformer les formats NUMÉRIQUE en DATE (Par contre, il existe pour les passer de CHAR en DATE).
Voici un petit code trouvé sur le net pour le faire:

DATE(TIMESTAMP_FORMAT( char( DATE_NUMERIQUE), 'YYYYMMDD'))

 

CASE WHEN

Petit rappel (pour moi aussi): Comment fait-on un simple choix multiple en DB2 sur IBM i:

SELECT *
  FROM fichiera
 WHERE A1  in( SELECT CASE
                      WHEN SUBSTR( B2, 19, 7) <> ''
                           THEN INT( SUBSTR( B2, 19, 7))
                      WHEN SUBSTR( B2, 19, 7) <> '4'
                           THEN 4
                      ELSE 0 END AS B3
                 FROM fichierb)