Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 3 sur 3
  1. #1
    Candidat au titre de Membre du Club
    Homme Profil pro
    Inscrit en
    octobre 2012
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : octobre 2012
    Messages : 24
    Points : 12
    Points
    12

    Par défaut Incrémenter des valeurs

    Bonjour à tous,

    Je ne suis pas convaincu que mon titre soit très évocateur mais je ne savais pas très bien quoi mettre. J'aurai besoin de l'expérience de l'un de vous

    Alors voilà, en faisant touner une requête, j'ai ce résultat là:

    WORDER --- ID ----- TYPE
    1 ------ 280710 ----- 19
    2 ------ 275435 ----- 13
    3 ------ 276838 ----- 13
    4 ------ 276870 ----- 13
    5 ------ 276970 ----- 13
    6 ------ 276983 ----- 13
    7 ------ 276995 ----- 13
    8 ------ 277014 ----- 13
    9 ------ 277130 ----- 13
    10 ----- 277350 ----- 13
    11 ----- 277362 ----- 13
    12 ----- 280711 ----- 19
    13 ----- 277374 ----- 13
    14 ----- 277386 ----- 13
    15 ----- 277398 ----- 13
    16 ----- 277450 ----- 13
    17 ----- 277462 ----- 13
    18 ----- 277710 ----- 13
    19 ----- 277770 ----- 13
    20 ----- 277805 ----- 13
    21 ----- 277830 ----- 13
    22 ----- 277842 ----- 13
    23 ----- 280712 ----- 19
    24 ----- 277854 ----- 13
    25 ----- 278030 ----- 13
    etc..........

    La première colonne est un numéro d'ordre, la deuxième c'est l'ID de mes échantillons et la troisième est le type d'échantillon (13 ou 19)

    En fait, le type 19 représente des blancs pour mes analyses.
    Et, le type 13 ce sont mes échantillons à analyser.


    Ce que j'aurai besoin de faire apparaître, c'est la position à laquelle vont se retrouver les blancs et les échantillons dans mon instrument.
    Les blancs (type 19) sont soit à la position 1203 et 1204 et s'intercale tous les 10 échantillons.
    Les échantillons (type 13) peuvent occuper 12 places sur mon rack et donc eux se trouvent au position 2101 à 2112, puis 2201 à 2212, puis 2301 à 2312, etc...


    Concrètement, je dois avoir ce résultat là précisément:

    WORDER --- ID ----- TYPE --- POSITION
    1 ------ 280710 ----- 19 ----- 1203
    2 ------ 275435 ----- 13 ----- 2101
    3 ------ 276838 ----- 13 ----- 2102
    4 ------ 276870 ----- 13 ----- 2103
    5 ------ 276970 ----- 13 ----- 2104
    6 ------ 276983 ----- 13 ----- 2105
    7 ------ 276995 ----- 13 ----- 2106
    8 ------ 277014 ----- 13 ----- 2107
    9 ------ 277130 ----- 13 ----- 2108
    10 ----- 277350 ----- 13 ----- 2109
    11 ----- 277362 ----- 13 ----- 2110
    12 ----- 280711 ----- 19 ----- 1204
    13 ----- 277374 ----- 13 ----- 2111
    14 ----- 277386 ----- 13 ----- 2112
    15 ----- 277398 ----- 13 ----- 2201
    16 ----- 277450 ----- 13 ----- 2202
    17 ----- 277462 ----- 13 ----- 2203
    18 ----- 277710 ----- 13 ----- 2204
    19 ----- 277770 ----- 13 ----- 2205
    20 ----- 277805 ----- 13 ----- 2206
    21 ----- 277830 ----- 13 ----- 2207
    22 ----- 277842 ----- 13 ----- 2208
    23 ----- 280712 ----- 19 ----- 1203
    24 ----- 277854 ----- 13 ----- 2209
    25 ----- 278030 ----- 13 ----- 2210
    etc....


    J'ai donc commencé à écrire la requête suivante:

    Code :
    1
    2
    3
    4
    5
    6
    7
     
    SELECT worder, id, type,
           CASE WHEN type = 13 THEN '2'||(100 + ROW_NUMBER() OVER(PARTITION BY type ORDER BY ORDER))
                WHEN type = 19 THEN '120'||(2 + ROW_NUMBER() OVER(PARTITION BY type ORDER BY ORDER))
                END Position
      FROM worksheet
     ORDER BY worder
    Mais elle ne me donne que ça :
    WORDER --- ID ----- TYPE --- POSITION
    1 ------ 280710 ----- 19 ----- 1203
    2 ------ 275435 ----- 13 ----- 2101
    3 ------ 276838 ----- 13 ----- 2102
    4 ------ 276870 ----- 13 ----- 2103
    5 ------ 276970 ----- 13 ----- 2104
    6 ------ 276983 ----- 13 ----- 2105
    7 ------ 276995 ----- 13 ----- 2106
    8 ------ 277014 ----- 13 ----- 2107
    9 ------ 277130 ----- 13 ----- 2108
    10 ----- 277350 ----- 13 ----- 2109
    11 ----- 277362 ----- 13 ----- 2110
    12 ----- 280711 ----- 19 ----- 1204
    13 ----- 277374 ----- 13 ----- 2111
    14 ----- 277386 ----- 13 ----- 2112
    15 ----- 277398 ----- 13 ----- 2113
    16 ----- 277450 ----- 13 ----- 2114
    17 ----- 277462 ----- 13 ----- 2115
    18 ----- 277710 ----- 13 ----- 2116
    19 ----- 277770 ----- 13 ----- 2117
    20 ----- 277805 ----- 13 ----- 2118
    21 ----- 277830 ----- 13 ----- 2119
    22 ----- 277842 ----- 13 ----- 2120
    23 ----- 280712 ----- 19 ----- 1205
    24 ----- 277854 ----- 13 ----- 2121
    25 ----- 278030 ----- 13 ----- 2122
    etc.

    Alors oui, ça marche pour les 14 premières lignes, mais après... ça se complique.

    Comment dois-je faire pour qu'une fois à 1204, il reparte à 1203 (dans le cas du type 19)
    Et pour qu'une fois arrivé au 2112, il poursuive par 2201 jusque 2212, puis 2301 jusque 2312, etc... (dans le cas du type 13)

    Mercii pour vos conseils et suggestions, ça m'aiderait bien

    Henri

  2. #2
    Membre Expert
    Inscrit en
    août 2009
    Messages
    1 046
    Détails du profil
    Informations forums :
    Inscription : août 2009
    Messages : 1 046
    Points : 1 750
    Points
    1 750

    Par défaut

    Quelque chose du genre :


    Code :
    1
    2
    3
    4
    5
    6
    7
     
    SELECT worder, id, type,
           CASE WHEN type = 13 THEN 1203 + MOD(ROW_NUMBER() OVER(PARTITION BY type ORDER BY WORDER),2))
                WHEN type = 19 THEN 2101 + MOD(ROW_NUMBER() OVER(PARTITION BY type ORDER BY WORDER),12) + 100 * TRUNC(ROW_NUMBER() OVER(PARTITION BY type ORDER BY WORDER)/12))
                END Position
      FROM worksheet
     ORDER BY worder
    Non testé du tout, il y a probablement des erreurs de parenthésage, enfin bon c'est l'idée qui compte

  3. #3
    Candidat au titre de Membre du Club
    Homme Profil pro
    Inscrit en
    octobre 2012
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : octobre 2012
    Messages : 24
    Points : 12
    Points
    12

    Par défaut

    Fantastique Rei Ichido !!

    C'est pas parfait comme tu dis, mais j'ai compris le truc. Merci de m'avoir rediriger vers la bonne voie. Génial

+ Répondre à la discussion
Cette discussion est résolue.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •