Catégorie : SQL

  • SQL – Gestion des Dates

    Comment récupérer la date du jour avec une requête SQL : select current date from persphy fetch first 1 rows only  ou SELECT CURRENT DATE FROM SYSIBM/SYSDUMMY1 Ou SELECT CURDATE() FROM SYSIBM/SYSDUMMY1Aujourd’hui en SQL, au format YYYYMMDDSELECT YEAR(CURRENT DATE) * 10000 + MONTH(CURRENT DATE) * 100  + DAY(CURRENT DATE )           FROM SYSIBM/SYSDUMMY1  Calcul de dates, SELECT DATE(DAYS(CURRENT DATE)-1) FROM SYSIBM/SYSDUMMY1SELECT […]

  • IBM i – Comment lancer une requête SQL par commande

    L’API IBM « QZDFMDB2 » permet d’exécuter une requêtes SQL dans un programme ou une ligne de commande. Exemple : Ecriture dans un fichier CALL QZDFMDB2 (‘INSERT INTO qgpl.qauoopt (OPTION, COMMAND) VALUES( »ob »,  »WRKOBJPDM *ALL »)’)                                                                               Puis pour consulter le résultat : CALL QZDFMDB2 (‘SELECT * FROM qgpl.qauoopt ‘)

  • Crypter vos données par SQL

    Pour crypter vos données dans une requête SQL :UPDATE MNOPT1PF SET CDAPL  = XOR(CDAPL,’motdepasse’)     Pour décrypter, rejouer la même requête.

  • SQL – Sélection du premier enregistrement

    Comment sélectionner le premier enregistrement lorsque plusieurs correspondent aux critères de sélection ?   Il faut utiliser rrn() et une sous requête  Exemple : Dans le fichier PERSPHY,on veut afficher la première personne dont le nom commence par S select * from PERSPHY where rrn(PERSPHY) = (select min(rrn(PERSPHY)) from PERSPHY where NOM like ‘S%’)

  • SQL – Créer une table temporaire

    L’instruction SQL DECLARE GLOBAL TEMPORARY TABLE permet de créer une table dans QTEMP. DECLARE GLOBAL TEMPORARY TABLE FICHIER AS (SELECT * FROM PERSPHY) WITH DATA WITH REPLACE NOT LOGGED DECLARE GLOBAL TEMPORARY TABLE CLIENTS ( CODE integer, RAISOC char(50),         ADR1 varchar(50), ADR2 varchar(50), VILLE varCHAR(50) )WITH REPLACE                     […]

  • SQL – Comment faire un comptage horizontal

    Exemple de comptage horizontal avec une rupture sur le code produit : select code,    sum(case VILCLI when ‘ANNECY’ then 1 else 0 end) as LYON,    sum(case VILCLI when ‘PARIS’ then 1 else 0 end) as PARIS,    sum(case when VILCLI not in (‘LYON’,’PARIS’)                then 1 else 0 end) as DIVERSfrom clientsgroup by code   order by code     CODE   […]

  • SQE / CQE

    CQE (ancien moteur) est toujours utilisé dans les cas suivants :  l’utilisation de TRANSLATE, UPPER/UCASE, LOWER/LCASE tri basé sur STRSEQ(*LANGIDUNQ) ou STRSEQ(*LANGIDSHR) l’utilisation de fonctions TABLE (UDTF) l’utilisation de logiques dans la clause FROM l’utilisation de tables ayant des logiques avec select/omit (sauf si ajout de IGNORE_DERIVED_INDEX dans QAQQINI) SQE :  A partir de la V5R4, prend en charge l’utilisation de […]

  • IBM i – Des couleurs dans le résultat d’une requête SQL

    En 5250, il est possible d’afficher le résultat d’une requête avec plusieurs couleurs. tout d’abord, il faut savoir que les couleurs se définissent pas des code Hexa : x’20’ Vertx’21’ Vert en inverse vidéox’22’ Blancx’23’ Blanc en inverse vidéox’28’ Rougex’29’ Rouge en inverse vidéox’2A’ Clignotantx’2B’ Clignotant en inverse vidéox’3a’ Bleu SELECT CASE WHEN COUNT(*) > 10 […]

  • IBM i – Afficher l’historique d’une session SQL

    Sur IMB i , il est possible de sauvegarder le contenu d’une session SQL en séléctionnant l’option 4  S »auvegarde session dans fichier source ». Il est également possible d’afficher l’historique de la session de n’importe quel profil en tapant la commande suivante :    DMPSYSOBJ OBJ(ISQLSTxx*) CONTEXT(QRECOVERY) TYPE(19) SUBTYPE(EE) xx est le nom du profil à afficher. […]

  • SQL – Requète avec Tri conditionnel

    Il est possible d’effectuer un tri dans une requète SQL en y incluant une condition.  Par exemple, ma requète affiche la liste des adresses présentes dans ma table, triées par code postal. Cependan, je souhaite affichier les enregistrements dont le code postal sont à 0 en dernier. SELECT ADR1, ADR2 , CODPO, BURDI, PAYS, FROM […]