IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PL/SQL Oracle Discussion :

urgent besoin d aide sur PL/SQL


Sujet :

PL/SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 40
    Par défaut urgent besoin d aide sur PL/SQL
    Bonjour

    je suis novice sur oracle

    et j aimerai avoir votre aide sur un sujet a savoir le passage de ce tableau

    id valeur date
    A 30 01/01/2010
    A 30 02/01/2010
    A 30 03/01/2010
    A 31 04/01/2010
    A 31 06/01/2010
    A 30 09/01/2010
    A 30 12/01/2010
    A 30 13/01/2010


    a celui juste en dessous

    id valeur date debut date fin
    A 30 01/01/2010 03/01/2010
    A 31 04/01/2010 06/01/2010
    A 30 09/01/2010 13/01/2010


    n hesitez pas a me contacter si y a besoin de plus de details

    je vous remercie d avance de votre

  2. #2
    Invité
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    select id, valeur, min(date), max(date) 
    from ma_table
    group by id, valeur
    order by id, valeur

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 40
    Par défaut urgent besoin d aide sur PL/SQL
    D abord je vous remercie pour votre reponse et votre reactivité
    Ben efait il n excute pas la requete correctement pour que j obtienne le resultat final

    a savoir :

    id valeur date debut date fin
    A 30 01/01/2010 03/01/2010
    A 31 04/01/2010 06/01/2010
    A 30 01/01/2010 13/01/2010
    l idée serait qu il partitionne par tranche de ID et de valeur identique et qu effectivement il prenne le max et le min au niveau des dates or quand j excute la requete

    quand il revient a la valeur 30 la date de debut est la meme que celle qu il a traité auparant

  4. #4
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Je n'ai pas d'Oracle sous la main, mais ça donne ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    WITH SR AS
    (
    select id, valeur, date,
           row_number() over(                        order by date asc) -
           row_number() over(partition by id, valeur order by date asc) as grp_id
      from matable
    )
      select id, valeur,
             min(date), max(date)
        from SR
    group by id, valeur, grp_id;

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 40
    Par défaut urgent aide sur pl/sql
    Bonjour

    je vous remercie de votre reponse et voitre réactivité

    les resultats obtenus sont un peu bizarre dans le sens ou avec le row number il va compter le nombre de valeur sur tout le perimetre de la table

    je vous mets en copie ma requete et vous me direz ou il y a erreur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
    WITH filtre1 AS (
    SELECT 
    * 
    FROM crddata.rd_cds_ts
    WHERE 0+to_char(asof,'DD') <= 31
    AND asof BETWEEN '01/01/2009' AND '31/12/2009' 
    )
    ,filtre2 AS (
    SELECT
    obj_id 
    ,cds J
    ,asof
    ,row_number() over( ORDER BY asof ASC) -
    row_number() over(partition BY obj_id, cds ORDER BY asof ASC) AS grp_id
    FROM filtre1 
    ), filtre3 AS (
     
    SELECT
    obj_id
    ,j
    ,grp_id
    ,asof
    ,min(asof) over(partition by obj_id, j order by asof ) dte_debut
    ,max(asof) over(partition by obj_id, j order by asof ) dte_fin
    from filtre2 
    group by obj_id, j, grp_id, asof
     
    )
    SELECT
    * 
    from filtre3
    where obj_id ='150'
    la premiere partie de la requete sert a délimiter le perimetre
    ( la table crddata.rd_cds_ts contient plus de 150 millions de lignes
    donc je teste d abord sur un le perimetre de 2009)

    la deusieme partie je n y est pas compris grand chose

    ( sachant que ASOF est la time series
    CDS c est le parametre valeur et l'obj_id est l est l id)

    voici le resultat obtenu en faisant le test sur un seul obj_id

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
     
    OBJ_ID    J    GRP_ID    ASOF    DTE_DEBUT    DTE_FIN
    150    30    4590    01/01/2009    01/01/2009    01/01/2009
    150    30    214175    02/01/2009    01/01/2009    02/01/2009
    150    30    223328    05/01/2009    01/01/2009    05/01/2009
    150    30    432984    06/01/2009    01/01/2009    06/01/2009
    150    30    442113    07/01/2009    01/01/2009    07/01/2009
    150    30    651739    08/01/2009    01/01/2009    08/01/2009
    150    30    660895    09/01/2009    01/01/2009    09/01/2009
    150    30    870422    12/01/2009    01/01/2009    12/01/2009
    150    30    879483    13/01/2009    01/01/2009    13/01/2009
    150    30    1089100    14/01/2009    01/01/2009    14/01/2009
    150    30    1098138    15/01/2009    01/01/2009    15/01/2009
    150    30    1307387    16/01/2009    01/01/2009    16/01/2009
    150    30    1316528    19/01/2009    01/01/2009    19/01/2009
    150    30    1526153    20/01/2009    01/01/2009    20/01/2009
    150    30    1535295    21/01/2009    01/01/2009    21/01/2009
    150    30    1744935    22/01/2009    01/01/2009    22/01/2009
    150    30    1754075    23/01/2009    01/01/2009    23/01/2009
    150    30    1963702    26/01/2009    01/01/2009    26/01/2009
    150    30    1972841    27/01/2009    01/01/2009    27/01/2009
    150    30    2182476    28/01/2009    01/01/2009    28/01/2009
    150    30    2191631    29/01/2009    01/01/2009    29/01/2009
    150    30    2401290    30/01/2009    01/01/2009    30/01/2009
    150    30    2410422    02/02/2009    01/01/2009    02/02/2009
    150    30    2620051    03/02/2009    01/01/2009    03/02/2009
    150    30    2809425    05/02/2009    01/01/2009    05/02/2009
    150    30    2818403    06/02/2009    01/01/2009    06/02/2009
    150    30    3028197    09/02/2009    01/01/2009    09/02/2009
    150    30    3037176    10/02/2009    01/01/2009    10/02/2009
    150    30    3246987    11/02/2009    01/01/2009    11/02/2009
    150    30    3255975    13/02/2009    01/01/2009    13/02/2009
    150    30    3465756    16/02/2009    01/01/2009    16/02/2009
    150    30    3474716    17/02/2009    01/01/2009    17/02/2009
    150    30    3684522    18/02/2009    01/01/2009    18/02/2009
    150    30    3693497    19/02/2009    01/01/2009    19/02/2009
    150    30    3903305    20/02/2009    01/01/2009    20/02/2009
    150    30    3912278    23/02/2009    01/01/2009    23/02/2009
    150    30    4122096    24/02/2009    01/01/2009    24/02/2009
    150    30    4131004    25/02/2009    01/01/2009    25/02/2009
    150    30    4340781    26/02/2009    01/01/2009    26/02/2009
    150    30    6091091    20/03/2009    01/01/2009    20/03/2009
    150    30    6100066    23/03/2009    01/01/2009    23/03/2009
    150    30    6309873    24/03/2009    01/01/2009    24/03/2009
    150    30    6318849    25/03/2009    01/01/2009    25/03/2009
    150    30    6528655    26/03/2009    01/01/2009    26/03/2009
    150    30    6537631    27/03/2009    01/01/2009    27/03/2009
    150    30    6747412    30/03/2009    01/01/2009    30/03/2009
    150    30    6756389    31/03/2009    01/01/2009    31/03/2009
    150    30    6966114    01/04/2009    01/01/2009    01/04/2009
    150    30    6975091    02/04/2009    01/01/2009    02/04/2009
    150    30    7184816    03/04/2009    01/01/2009    03/04/2009
    150    30    7193793    06/04/2009    01/01/2009    06/04/2009
    150    30    7403550    07/04/2009    01/01/2009    07/04/2009
    150    30    7412519    08/04/2009    01/01/2009    08/04/2009
    150    30    7622253    09/04/2009    01/01/2009    09/04/2009
    150    30    7631228    10/04/2009    01/01/2009    10/04/2009
    150    30    7840891    13/04/2009    01/01/2009    13/04/2009
    150    30    7849866    14/04/2009    01/01/2009    14/04/2009
    150    30    8059631    15/04/2009    01/01/2009    15/04/2009
    150    30    8068606    16/04/2009    01/01/2009    16/04/2009
    150    30    8278304    17/04/2009    01/01/2009    17/04/2009
    150    30    8287268    20/04/2009    01/01/2009    20/04/2009
    150    30    8496998    21/04/2009    01/01/2009    21/04/2009
    150    30    8505990    22/04/2009    01/01/2009    22/04/2009
    150    30    8715709    23/04/2009    01/01/2009    23/04/2009
    150    30    8724665    07/05/2009    01/01/2009    07/05/2009
    150    30    8924033    08/05/2009    01/01/2009    08/05/2009
    150    30    8933025    11/05/2009    01/01/2009    11/05/2009
    150    30    9142798    12/05/2009    01/01/2009    12/05/2009
    150    30    9151774    13/05/2009    01/01/2009    13/05/2009
    150    30    9361581    14/05/2009    01/01/2009    14/05/2009
    150    30    9370545    15/05/2009    01/01/2009    15/05/2009
    150    30    9580224    18/05/2009    01/01/2009    18/05/2009
    150    30    9589197    19/05/2009    01/01/2009    19/05/2009
    150    30    9798954    20/05/2009    01/01/2009    20/05/2009
    150    30    9807879    21/05/2009    01/01/2009    21/05/2009
    150    30    10007667    22/05/2009    01/01/2009    22/05/2009
    150    30    10016646    25/05/2009    01/01/2009    25/05/2009
    150    30    10226429    26/05/2009    01/01/2009    26/05/2009
    150    30    10235408    27/05/2009    01/01/2009    27/05/2009
    150    30    10445187    28/05/2009    01/01/2009    28/05/2009
    150    30    10454165    29/05/2009    01/01/2009    29/05/2009
    150    30    10663850    01/06/2009    01/01/2009    01/06/2009
    150    30    10672827    02/06/2009    01/01/2009    02/06/2009
    150    30    10882625    03/06/2009    01/01/2009    03/06/2009
    150    30    10891602    04/06/2009    01/01/2009    04/06/2009
    150    30    11101411    05/06/2009    01/01/2009    05/06/2009
    150    30    11110388    08/06/2009    01/01/2009    08/06/2009
    150    30    11320163    09/06/2009    01/01/2009    09/06/2009
    150    30    11329140    10/06/2009    01/01/2009    10/06/2009
    150    30    11538917    11/06/2009    01/01/2009    11/06/2009
    150    30    11547973    12/06/2009    01/01/2009    12/06/2009
    150    30    11757478    15/06/2009    01/01/2009    15/06/2009
    150    30    11766612    16/06/2009    01/01/2009    16/06/2009
    150    30    11976245    17/06/2009    01/01/2009    17/06/2009
    150    30    11985378    18/06/2009    01/01/2009    18/06/2009
    150    30    12195027    19/06/2009    01/01/2009    19/06/2009
    150    30    12204160    22/06/2009    01/01/2009    22/06/2009
    150    30    12413649    23/06/2009    01/01/2009    23/06/2009
    150    30    12422782    24/06/2009    01/01/2009    24/06/2009
    150    30    12632271    25/06/2009    01/01/2009    25/06/2009
    150    30    12641423    26/06/2009    01/01/2009    26/06/2009
    150    30    12850919    29/06/2009    01/01/2009    29/06/2009
    150    30    12859961    30/06/2009    01/01/2009    30/06/2009
    150    30    13069532    01/07/2009    01/01/2009    01/07/2009
    150    30    13078503    02/07/2009    01/01/2009    02/07/2009
    150    30    13276958    03/07/2009    01/01/2009    03/07/2009
    150    30    13285929    06/07/2009    01/01/2009    06/07/2009
    150    30    13495660    07/07/2009    01/01/2009    07/07/2009
    150    30    13504641    08/07/2009    01/01/2009    08/07/2009
    150    30    13714385    09/07/2009    01/01/2009    09/07/2009
    150    30    13723351    10/07/2009    01/01/2009    10/07/2009
    150    30    13933047    13/07/2009    01/01/2009    13/07/2009
    150    30    13941917    14/07/2009    01/01/2009    14/07/2009
    150    30    14151645    15/07/2009    01/01/2009    15/07/2009
    150    30    14160698    16/07/2009    01/01/2009    16/07/2009
    150    30    14370178    17/07/2009    01/01/2009    17/07/2009
    150    30    14379312    20/07/2009    01/01/2009    20/07/2009
    150    30    14537272    22/07/2009    01/01/2009    22/07/2009
    150    30    14742072    23/07/2009    01/01/2009    23/07/2009
    150    30    14755973    24/07/2009    01/01/2009    24/07/2009
    150    30    14912975    28/07/2009    01/01/2009    28/07/2009
    150    30    15114922    29/07/2009    01/01/2009    29/07/2009
    150    30    15131678    30/07/2009    01/01/2009    30/07/2009
    150    30    15333371    31/07/2009    01/01/2009    31/07/2009
    150    30    15350053    03/08/2009    01/01/2009    03/08/2009
    150    30    15551722    04/08/2009    01/01/2009    04/08/2009
    150    30    15568388    05/08/2009    01/01/2009    05/08/2009
    150    30    15770266    06/08/2009    01/01/2009    06/08/2009
    150    30    15786865    07/08/2009    01/01/2009    07/08/2009
    150    30    15988736    10/08/2009    01/01/2009    10/08/2009
    150    30    16005335    11/08/2009    01/01/2009    11/08/2009
    150    30    16206354    12/08/2009    01/01/2009    12/08/2009
    150    30    16222354    13/08/2009    01/01/2009    13/08/2009
    150    30    16424459    14/08/2009    01/01/2009    14/08/2009
    150    30    16441057    17/08/2009    01/01/2009    17/08/2009
    150    30    16643162    18/08/2009    01/01/2009    18/08/2009
    150    30    16659781    19/08/2009    01/01/2009    19/08/2009
    150    30    16861883    20/08/2009    01/01/2009    20/08/2009
    150    30    16878469    21/08/2009    01/01/2009    21/08/2009
    150    30    17080566    24/08/2009    01/01/2009    24/08/2009
    150    30    17097164    25/08/2009    01/01/2009    25/08/2009
    150    30    17299149    26/08/2009    01/01/2009    26/08/2009
    150    30    17315644    27/08/2009    01/01/2009    27/08/2009
    150    30    19064535    18/09/2009    01/01/2009    18/09/2009
    150    30    19266531    21/09/2009    01/01/2009    21/09/2009
    150    30    19283299    22/09/2009    01/01/2009    22/09/2009
    150    30    19485269    23/09/2009    01/01/2009    23/09/2009
    150    30    19501933    24/09/2009    01/01/2009    24/09/2009
    150    30    19703885    25/09/2009    01/01/2009    25/09/2009
    150    30    19720576    28/09/2009    01/01/2009    28/09/2009
    150    30    19922701    29/09/2009    01/01/2009    29/09/2009
    150    30    19939394    30/09/2009    01/01/2009    30/09/2009
    150    30    20141360    01/10/2009    01/01/2009    01/10/2009
    150    30    20158131    02/10/2009    01/01/2009    02/10/2009
    150    30    20360098    05/10/2009    01/01/2009    05/10/2009
    150    30    20376869    06/10/2009    01/01/2009    06/10/2009
    150    30    20578916    07/10/2009    01/01/2009    07/10/2009
    150    30    20595606    08/10/2009    01/01/2009    08/10/2009
    150    30    20797587    09/10/2009    01/01/2009    09/10/2009
    150    30    20814346    12/10/2009    01/01/2009    12/10/2009
    150    30    21016193    13/10/2009    01/01/2009    13/10/2009
    150    30    21221119    15/10/2009    01/01/2009    15/10/2009
    150    30    21237880    16/10/2009    01/01/2009    16/10/2009
    150    30    21439845    19/10/2009    01/01/2009    19/10/2009
    150    30    21456627    20/10/2009    01/01/2009    20/10/2009
    150    30    21658479    21/10/2009    01/01/2009    21/10/2009
    150    30    21675252    22/10/2009    01/01/2009    22/10/2009
    150    30    21877192    23/10/2009    01/01/2009    23/10/2009
    150    30    21893956    26/10/2009    01/01/2009    26/10/2009
    150    30    22095965    27/10/2009    01/01/2009    27/10/2009
    150    30    22112578    28/10/2009    01/01/2009    28/10/2009
    150    30    22314676    29/10/2009    01/01/2009    29/10/2009
    150    30    22331297    30/10/2009    01/01/2009    30/10/2009
    150    30    22533422    02/11/2009    01/01/2009    02/11/2009
    150    30    22550051    03/11/2009    01/01/2009    03/11/2009
    150    30    22752170    04/11/2009    01/01/2009    04/11/2009
    150    30    22768772    05/11/2009    01/01/2009    05/11/2009
    150    30    24659946    01/12/2009    01/01/2009    01/12/2009
    150    30    24813748    02/12/2009    01/01/2009    02/12/2009
    150    30    24878646    03/12/2009    01/01/2009    03/12/2009
    150    30    25032459    04/12/2009    01/01/2009    04/12/2009
    150    30    25097352    07/12/2009    01/01/2009    07/12/2009
    150    30    25251164    08/12/2009    01/01/2009    08/12/2009
    150    30    25316052    09/12/2009    01/01/2009    09/12/2009
    150    30    25469863    10/12/2009    01/01/2009    10/12/2009
    150    30    25688173    14/12/2009    01/01/2009    14/12/2009
    150    30    25752964    15/12/2009    01/01/2009    15/12/2009
    150    30    25906593    16/12/2009    01/01/2009    16/12/2009
    150    30    25971482    17/12/2009    01/01/2009    17/12/2009
    150    30    26125280    18/12/2009    01/01/2009    18/12/2009
    150    30    26190173    21/12/2009    01/01/2009    21/12/2009
    150    30    26344110    22/12/2009    01/01/2009    22/12/2009
    150    30    26408849    23/12/2009    01/01/2009    23/12/2009
    150    30    26562864    24/12/2009    01/01/2009    24/12/2009
    150    30    26627603    25/12/2009    01/01/2009    25/12/2009
    150    30    26781618    28/12/2009    01/01/2009    28/12/2009
    150    30    26846357    29/12/2009    01/01/2009    29/12/2009
    150    30    27000372    30/12/2009    01/01/2009    30/12/2009
    150    30    27064847    31/12/2009    01/01/2009    31/12/2009
    150    30.01    4349802    27/02/2009    27/02/2009    27/02/2009
    150    30.01    4559618    02/03/2009    27/02/2009    02/03/2009
    150    30.01    4568591    03/03/2009    27/02/2009    03/03/2009
    150    30.01    4778415    04/03/2009    27/02/2009    04/03/2009
    150    30.01    4787391    05/03/2009    27/02/2009    05/03/2009
    150    30.01    4997212    06/03/2009    27/02/2009    06/03/2009
    150    30.01    5006189    09/03/2009    27/02/2009    09/03/2009
    150    30.01    5216010    10/03/2009    27/02/2009    10/03/2009
    150    30.01    5224987    11/03/2009    27/02/2009    11/03/2009
    150    30.01    5434808    12/03/2009    27/02/2009    12/03/2009
    150    30.01    5443785    13/03/2009    27/02/2009    13/03/2009
    150    30.01    5653526    16/03/2009    27/02/2009    16/03/2009
    150    30.01    5662503    17/03/2009    27/02/2009    17/03/2009
    150    30.01    5872324    18/03/2009    27/02/2009    18/03/2009
    150    30.01    5881300    19/03/2009    27/02/2009    19/03/2009
    150    30.01    17517857    28/08/2009    27/02/2009    28/08/2009
    150    30.01    17534452    31/08/2009    27/02/2009    31/08/2009
    150    30.01    17736560    01/09/2009    27/02/2009    01/09/2009
    150    30.01    17753153    02/09/2009    27/02/2009    02/09/2009
    150    30.01    17955262    03/09/2009    27/02/2009    03/09/2009
    150    30.01    17971855    04/09/2009    27/02/2009    04/09/2009
    150    30.01    18173471    07/09/2009    27/02/2009    07/09/2009
    150    30.01    18190109    08/09/2009    27/02/2009    08/09/2009
    150    30.01    18392070    09/09/2009    27/02/2009    09/09/2009
    150    30.01    18408813    10/09/2009    27/02/2009    10/09/2009
    150    30.01    18610737    11/09/2009    27/02/2009    11/09/2009
    150    30.01    18627510    14/09/2009    27/02/2009    14/09/2009
    150    30.01    18829400    15/09/2009    27/02/2009    15/09/2009
    150    30.01    18846143    16/09/2009    27/02/2009    16/09/2009
    150    30.01    19047888    17/09/2009    27/02/2009    17/09/2009
    150    30.01    22912109    09/11/2009    27/02/2009    09/11/2009
    150    30.01    23065931    10/11/2009    27/02/2009    10/11/2009
    150    30.01    23130820    11/11/2009    27/02/2009    11/11/2009
    150    30.01    23284654    12/11/2009    27/02/2009    12/11/2009
    150    30.01    23349569    13/11/2009    27/02/2009    13/11/2009
    150    30.01    23503416    16/11/2009    27/02/2009    16/11/2009
    150    30.01    23568179    17/11/2009    27/02/2009    17/11/2009
    150    30.01    23721785    18/11/2009    27/02/2009    18/11/2009
    150    30.01    23786677    19/11/2009    27/02/2009    19/11/2009
    150    30.01    23940309    20/11/2009    27/02/2009    20/11/2009
    150    30.01    24005224    23/11/2009    27/02/2009    23/11/2009
    150    30.01    24158978    24/11/2009    27/02/2009    24/11/2009
    150    30.01    24223688    25/11/2009    27/02/2009    25/11/2009
    150    30.01    24377027    26/11/2009    27/02/2009    26/11/2009
    150    30.01    24441406    27/11/2009    27/02/2009    27/11/2009
    150    30.01    24595192    30/11/2009    27/02/2009    30/11/2009
    et j ai l impression que le grp_id va comptabiliser toutes les valeur 30 par exemple sur toute la table

    alors que l idée serait de tomber sur le resultat decrit plus haut voire message précédent

    Merci de votre aide

  6. #6
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Il faut retirer asof de votre avant dernière requête, dans le select ET dans le group by, vous l'avez déjà en temps que borne avec les min et max.

    Par contre, dans votre filtre1, le premier filtre à quoi sert-il ?
    Vous demandez à ce que tous les jours soient compris entre 0 et 31, est-ce un paramètre que vous passez à votre requête ou bien est-ce en dur ? Si c'est la seconde solution, vous pouvez supprimer ce filtre.

    Évitez aussi les select *, listez les colonnes dont vous avez besoin.
    Vous pouvez également regrouper vos deux CTE en une seule :

    Quand vous utilisez des chaînes de caractères pour vos dates, convertissez-les toujours en précisant le format :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    WITH filtre1 AS
    (
    SELECT obj_id, cds as j, asof,
           row_number() over(                         ORDER BY asof ASC) -
           row_number() over(partition BY obj_id, cds ORDER BY asof ASC) AS grp_id
      FROM crddata.rd_cds_ts
     WHERE asof BETWEEN to_date('01/01/2009', 'dd/mm/yyyy')
                    AND to_date('31/12/2009', 'dd/mm/yyyy')
    )

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 40
    Par défaut urgent besoin d aide sur PL/SQL
    Encore une fois merci beaucoup pour vos reponses

    Le filtre 1 sert a delimiter le périmetre sur l année 2009. C est ca seule fonctionnalité

    mon plus gros probleme c est celui ci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    OBJ_ID    J    ASOF    DTE_DEBUT    DTE_FIN
    150    30    01/01/2009    01/01/2009    01/01/2009
    150    30    02/01/2009    01/01/2009    02/01/2009
    150    30    05/01/2009    01/01/2009    05/01/2009
    150    30    06/01/2009    01/01/2009    06/01/2009
    150    30    07/01/2009    01/01/2009    07/01/2009
    150    30    08/01/2009    01/01/2009    08/01/2009
    150    30    09/01/2009    01/01/2009    09/01/2009
    150    30    12/01/2009    01/01/2009    12/01/2009
    150    30    13/01/2009    01/01/2009    13/01/2009
    150    30    14/01/2009    01/01/2009    14/01/2009
    150    30    15/01/2009    01/01/2009    15/01/2009
    150    30    16/01/2009    01/01/2009    16/01/2009
    150    30    19/01/2009    01/01/2009    19/01/2009
    150    30    20/01/2009    01/01/2009    20/01/2009
    150    30    21/01/2009    01/01/2009    21/01/2009
    150    30    22/01/2009    01/01/2009    22/01/2009
    150    30    23/01/2009    01/01/2009    23/01/2009
    150    30    26/01/2009    01/01/2009    26/01/2009
    150    30    27/01/2009    01/01/2009    27/01/2009
    150    30    28/01/2009    01/01/2009    28/01/2009
    150    30    29/01/2009    01/01/2009    29/01/2009
    150    30    30/01/2009    01/01/2009    30/01/2009
    150    30    02/02/2009    01/01/2009    02/02/2009
    150    30    03/02/2009    01/01/2009    03/02/2009
    150    30    05/02/2009    01/01/2009    05/02/2009
    150    30    06/02/2009    01/01/2009    06/02/2009
    150    30    09/02/2009    01/01/2009    09/02/2009
    150    30    10/02/2009    01/01/2009    10/02/2009
    150    30    11/02/2009    01/01/2009    11/02/2009
    150    30    13/02/2009    01/01/2009    13/02/2009
    150    30    16/02/2009    01/01/2009    16/02/2009
    150    30    17/02/2009    01/01/2009    17/02/2009
    150    30    18/02/2009    01/01/2009    18/02/2009
    150    30    19/02/2009    01/01/2009    19/02/2009
    150    30    20/02/2009    01/01/2009    20/02/2009
    150    30    23/02/2009    01/01/2009    23/02/2009
    150    30    24/02/2009    01/01/2009    24/02/2009
    150    30    25/02/2009    01/01/2009    25/02/2009
    150    30    26/02/2009    01/01/2009    26/02/2009
    150    30.01    27/02/2009    27/02/2009    27/02/2009
    150    30.01    02/03/2009    27/02/2009    02/03/2009
    150    30.01    03/03/2009    27/02/2009    03/03/2009
    150    30.01    04/03/2009    27/02/2009    04/03/2009
    150    30.01    05/03/2009    27/02/2009    05/03/2009
    150    30.01    06/03/2009    27/02/2009    06/03/2009
    150    30.01    09/03/2009    27/02/2009    09/03/2009
    150    30.01    10/03/2009    27/02/2009    10/03/2009
    150    30.01    11/03/2009    27/02/2009    11/03/2009
    150    30.01    12/03/2009    27/02/2009    12/03/2009
    150    30.01    13/03/2009    27/02/2009    13/03/2009
    150    30.01    16/03/2009    27/02/2009    16/03/2009
    150    30.01    17/03/2009    27/02/2009    17/03/2009
    150    30.01    18/03/2009    27/02/2009    18/03/2009
    150    30.01    19/03/2009    27/02/2009    19/03/2009
    150    30    20/03/2009    01/01/2009    20/03/2009
    150    30    23/03/2009    01/01/2009    23/03/2009
    150    30    24/03/2009    01/01/2009    24/03/2009
    150    30    25/03/2009    01/01/2009    25/03/2009
    150    30    26/03/2009    01/01/2009    26/03/2009
    150    30    27/03/2009    01/01/2009    27/03/2009
    150    30    30/03/2009    01/01/2009    30/03/2009

    je m explique

    quand il retrouve la valeur 30 au niveau de j , la date de debut sera la meme que celle du premier bloc ou il y a la valeur j = 30 ( j espere que j arrive a me faire comprendre ) alors qu il devrait prendre considerer la date 20/03/2009

    l idée serait qu il traite par bloc indépendant de valeur et d'ID pour recuperer au niveau des dates debut la premiere date a laquellle il rencontre une nouvelle valeur de J

    Merci encore de votre aide

  8. #8
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Utilisez la base code (#) pour mettre vos données, vous rendez ce sujet complètement illisible.

    Je ne sais pas où vous avez commis une erreur, mais la requête fonctionne bien.
    Voici avec vos données :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    With rd_cds_ts as
    (
    select 150 as obj_id, 30 as cds, to_date('01/01/2009', 'dd/mm/yyyy') as asof from dual union all
    select 150          , 30       , to_date('02/01/2009', 'dd/mm/yyyy')         from dual union all
    select 150          , 30       , to_date('05/01/2009', 'dd/mm/yyyy')         from dual union all
    select 150          , 30       , to_date('06/01/2009', 'dd/mm/yyyy')         from dual union all
    select 150          , 30       , to_date('07/01/2009', 'dd/mm/yyyy')         from dual union all
    select 150          , 30       , to_date('08/01/2009', 'dd/mm/yyyy')         from dual union all
    select 150          , 30       , to_date('09/01/2009', 'dd/mm/yyyy')         from dual union all
    select 150          , 30       , to_date('12/01/2009', 'dd/mm/yyyy')         from dual union all
    select 150          , 30       , to_date('13/01/2009', 'dd/mm/yyyy')         from dual union all
    select 150          , 30       , to_date('14/01/2009', 'dd/mm/yyyy')         from dual union all
    select 150          , 30       , to_date('15/01/2009', 'dd/mm/yyyy')         from dual union all
    select 150          , 30       , to_date('16/01/2009', 'dd/mm/yyyy')         from dual union all
    select 150          , 30       , to_date('19/01/2009', 'dd/mm/yyyy')         from dual union all
    select 150          , 30       , to_date('20/01/2009', 'dd/mm/yyyy')         from dual union all
    select 150          , 30       , to_date('21/01/2009', 'dd/mm/yyyy')         from dual union all
    select 150          , 30       , to_date('22/01/2009', 'dd/mm/yyyy')         from dual union all
    select 150          , 30       , to_date('23/01/2009', 'dd/mm/yyyy')         from dual union all
    select 150          , 30       , to_date('26/01/2009', 'dd/mm/yyyy')         from dual union all
    select 150          , 30       , to_date('27/01/2009', 'dd/mm/yyyy')         from dual union all
    select 150          , 30       , to_date('28/01/2009', 'dd/mm/yyyy')         from dual union all
    select 150          , 30       , to_date('29/01/2009', 'dd/mm/yyyy')         from dual union all
    select 150          , 30       , to_date('30/01/2009', 'dd/mm/yyyy')         from dual union all
    select 150          , 30       , to_date('02/02/2009', 'dd/mm/yyyy')         from dual union all
    select 150          , 30       , to_date('03/02/2009', 'dd/mm/yyyy')         from dual union all
    select 150          , 30       , to_date('05/02/2009', 'dd/mm/yyyy')         from dual union all
    select 150          , 30       , to_date('06/02/2009', 'dd/mm/yyyy')         from dual union all
    select 150          , 30       , to_date('09/02/2009', 'dd/mm/yyyy')         from dual union all
    select 150          , 30       , to_date('10/02/2009', 'dd/mm/yyyy')         from dual union all
    select 150          , 30       , to_date('11/02/2009', 'dd/mm/yyyy')         from dual union all
    select 150          , 30       , to_date('13/02/2009', 'dd/mm/yyyy')         from dual union all
    select 150          , 30       , to_date('16/02/2009', 'dd/mm/yyyy')         from dual union all
    select 150          , 30       , to_date('17/02/2009', 'dd/mm/yyyy')         from dual union all
    select 150          , 30       , to_date('18/02/2009', 'dd/mm/yyyy')         from dual union all
    select 150          , 30       , to_date('19/02/2009', 'dd/mm/yyyy')         from dual union all
    select 150          , 30       , to_date('20/02/2009', 'dd/mm/yyyy')         from dual union all
    select 150          , 30       , to_date('23/02/2009', 'dd/mm/yyyy')         from dual union all
    select 150          , 30       , to_date('24/02/2009', 'dd/mm/yyyy')         from dual union all
    select 150          , 30       , to_date('25/02/2009', 'dd/mm/yyyy')         from dual union all
    select 150          , 30       , to_date('26/02/2009', 'dd/mm/yyyy')         from dual union all
    select 150          , 30.01    , to_date('27/02/2009', 'dd/mm/yyyy')         from dual union all
    select 150          , 30.01    , to_date('02/03/2009', 'dd/mm/yyyy')         from dual union all
    select 150          , 30.01    , to_date('03/03/2009', 'dd/mm/yyyy')         from dual union all
    select 150          , 30.01    , to_date('04/03/2009', 'dd/mm/yyyy')         from dual union all
    select 150          , 30.01    , to_date('05/03/2009', 'dd/mm/yyyy')         from dual union all
    select 150          , 30.01    , to_date('06/03/2009', 'dd/mm/yyyy')         from dual union all
    select 150          , 30.01    , to_date('09/03/2009', 'dd/mm/yyyy')         from dual union all
    select 150          , 30.01    , to_date('10/03/2009', 'dd/mm/yyyy')         from dual union all
    select 150          , 30.01    , to_date('11/03/2009', 'dd/mm/yyyy')         from dual union all
    select 150          , 30.01    , to_date('12/03/2009', 'dd/mm/yyyy')         from dual union all
    select 150          , 30.01    , to_date('13/03/2009', 'dd/mm/yyyy')         from dual union all
    select 150          , 30.01    , to_date('16/03/2009', 'dd/mm/yyyy')         from dual union all
    select 150          , 30.01    , to_date('17/03/2009', 'dd/mm/yyyy')         from dual union all
    select 150          , 30.01    , to_date('18/03/2009', 'dd/mm/yyyy')         from dual union all
    select 150          , 30.01    , to_date('19/03/2009', 'dd/mm/yyyy')         from dual union all
    select 150          , 30       , to_date('20/03/2009', 'dd/mm/yyyy')         from dual union all
    select 150          , 30       , to_date('23/03/2009', 'dd/mm/yyyy')         from dual union all
    select 150          , 30       , to_date('24/03/2009', 'dd/mm/yyyy')         from dual union all
    select 150          , 30       , to_date('25/03/2009', 'dd/mm/yyyy')         from dual union all
    select 150          , 30       , to_date('26/03/2009', 'dd/mm/yyyy')         from dual union all
    select 150          , 30       , to_date('27/03/2009', 'dd/mm/yyyy')         from dual union all
    select 150          , 30       , to_date('30/03/2009', 'dd/mm/yyyy')         from dual
    )
      ,  filtre1 AS
    (
    SELECT obj_id, cds AS j, asof,
           row_number() over(                         ORDER BY asof ASC) -
           row_number() over(partition BY obj_id, cds ORDER BY asof ASC) AS grp_id
      FROM rd_cds_ts
     WHERE asof BETWEEN to_date('01/01/2009', 'dd/mm/yyyy')
                    AND to_date('31/12/2009', 'dd/mm/yyyy')
    )
      select obj_id, j,
             min(asof) as dte_debut,
             max(asof) as dte_fin
        from filtre1
    group by obj_id, j, grp_id
    order by obj_id asc, dte_debut asc;
     
    OBJ_ID	J	DTE_DEBUT	DTE_FIN
    150	30	01/01/2009	26/02/2009
    150	30.01	27/02/2009	19/03/2009
    150	30	20/03/2009	30/03/2009

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 40
    Par défaut urgent besoin d aide sur PL/SQL
    Merci merci

    vous etes un genie monsieur
    franchement j ai rien a redire ca merite une bierre pour feter tout ca
    j aimerai juste savoir qu est ce que fait la partie row number ?

    en tout merci encore enormement vous me sauvez la vie

Discussions similaires

  1. Besoin d'aide sur requête Sql
    Par Sekigawa dans le forum Requêtes et SQL.
    Réponses: 7
    Dernier message: 31/12/2009, 15h14
  2. Besoin d'aide sur requete SQL
    Par s.godquin dans le forum Langage SQL
    Réponses: 1
    Dernier message: 16/04/2009, 10h34
  3. Réponses: 7
    Dernier message: 18/07/2008, 09h44
  4. Besoin d'aide sur langage SQL. Extraire des données
    Par FaTaL25 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 19/12/2007, 13h47
  5. Besoin d'aide sur erreur sql
    Par stagos dans le forum Langage SQL
    Réponses: 2
    Dernier message: 21/11/2007, 11h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo