1. Get rid of all advertisements and get unlimited access to documents by upgrading to Premium Membership. Upgrade to Premium Now and also get a Premium Badge!

SQL : Decode with less than operator complex

Discussion in 'SQL PL/SQL' started by isk, Sep 6, 2013.

  1. isk

    isk Guest

    I want to select only rows which have GAS < 0.9 and oil < 0.9 from the following working query.

    THe below query works fine but i am not able to put in a check to select only when GAS < 0.9 and oil < 0.9 value, as I already using groupby ; I am not sure whats the best way to get this result.

    SELECT rf.DAYTIME, GEO_FIELD_CODE, f.NAME, ROUND(decode(THEOR_GAS_RATE_SM3, 0, NULL, NULL, NULL,ABS(ALLOC_GAS_VOL_SM3/THEOR_GAS_RATE_SM3)),3) AS GAS, ROUND(decode(THEOR_NET_OIL_RATE_STM3, 0, NULL, NULL, NULL,ABS(ALLOC_NET_OIL_VOL_STM3/THEOR_NET_OIL_RATE_STM3)),3) AS OIL FROM (SELECT DAYTIME, GEO_FIELD_CODE, SUM(THEOR_GAS_RATE_SM3) AS THEOR_GAS_RATE_SM3, SUM(ALLOC_GAS_VOL_SM3) AS ALLOC_GAS_VOL_SM3, SUM(THEOR_NET_OIL_RATE_STM3) AS THEOR_NET_OIL_RATE_STM3, SUM(ALLOC_NET_OIL_VOL_STM3) AS ALLOC_NET_OIL_VOL_STM3 FROM XYZ WHERE DAYTIME >= TO_DATE ('2013-01-01', 'yyyy-mm-dd') GROUP BY DAYTIME, GEO_FIELD_CODE ORDER BY GEO_FIELD_CODE, DAYTIME) rf, ECKERNEL_HALE.OV_FIELD f WHERE rf.GEO_FIELD_CODE = f.CODE

    any help will be much appreciated.

    thanks,
     
  2. dariyoosh

    dariyoosh Forum Advisor

    Messages:
    118
    Likes Received:
    19
    Trophy Points:
    260
    Use code tags to make your code readable:

    "["higlight=sql"]" <your code here> "["/highlight"]"

    and indent
    the code properly.

    If you don't know how to do it, there is an online tool for that;

    http://www.dpriver.com/pp/sqlformat.htm

    Provide a test case for your problem (CREATE TABLE statement along with the INSERT statements for values) and describe clearly the table.
     
  3. zargon

    zargon Community Moderator Forum Guru

    Messages:
    2,345
    Likes Received:
    347
    Trophy Points:
    1,430
    Location:
    Aurora, CO
    I presume you're on a release of Oracle that's 10.2 or later; if so this should work for you:

    Code (SQL):
    SQL> WITH GAS_OIL AS (
      2  SELECT rf.DAYTIME,
      3         GEO_FIELD_CODE,
      4         f.NAME,
      5         ROUND(decode(THEOR_GAS_RATE_SM3, 0, NULL, NULL, NULL,ABS(ALLOC_GAS_VOL_SM3/THEOR_GAS_RATE_SM3)),3) AS GAS,
      6         ROUND(decode(THEOR_NET_OIL_RATE_STM3, 0, NULL, NULL, NULL,ABS(ALLOC_NET_OIL_VOL_STM3/THEOR_NET_OIL_RATE_STM3)),3) AS OIL
      7  FROM (SELECT DAYTIME,
      8               GEO_FIELD_CODE,
      9               SUM(THEOR_GAS_RATE_SM3) AS THEOR_GAS_RATE_SM3,
     10               SUM(ALLOC_GAS_VOL_SM3) AS ALLOC_GAS_VOL_SM3,
     11               SUM(THEOR_NET_OIL_RATE_STM3) AS THEOR_NET_OIL_RATE_STM3,
     12               SUM(ALLOC_NET_OIL_VOL_STM3) AS ALLOC_NET_OIL_VOL_STM3
     13        FROM XYZ
     14        WHERE DAYTIME >= TO_DATE ('2013-01-01', 'yyyy-mm-dd')
     15        GROUP BY DAYTIME, GEO_FIELD_CODE
     16        ORDER BY GEO_FIELD_CODE, DAYTIME) rf, OV_FIELD f
     17  WHERE rf.GEO_FIELD_CODE = f.CODE)
     18  SELECT DAYTIME, GEO_FIELD_CODE, NAME, GAS, OIL
     19  FROM GAS_OIL
     20  WHERE GAS < 0.9
     21  AND OIL < 0.9
     22  /
     
    DAYTIME   GEO_FIELD_CODE       NAME                                                                            GAS        OIL
    --------- -------------------- -------------------------------------------------------------------------------- ---------- ----------
    07-SEP-13 FIELD1               OIL/GAS FIELD NUMBER 1                                                           .5         .5
    16-SEP-13 FIELD10              OIL/GAS FIELD NUMBER 10                                                          .2         .2
    15-DEC-13 FIELD100             OIL/GAS FIELD NUMBER 100                                                         .2         .2
    17-SEP-13 FIELD11              OIL/GAS FIELD NUMBER 11                                                        .167       .167
    19-SEP-13 FIELD13              OIL/GAS FIELD NUMBER 13                                                          .5         .5
    20-SEP-13 FIELD14              OIL/GAS FIELD NUMBER 14                                                        .333       .333
    21-SEP-13 FIELD15              OIL/GAS FIELD NUMBER 15                                                         .25        .25
    22-SEP-13 FIELD16              OIL/GAS FIELD NUMBER 16                                                          .2         .2
    23-SEP-13 FIELD17              OIL/GAS FIELD NUMBER 17                                                        .167       .167
    25-SEP-13 FIELD19              OIL/GAS FIELD NUMBER 19                                                          .5         .5
    08-SEP-13 FIELD2               OIL/GAS FIELD NUMBER 2                                                         .333       .333
    26-SEP-13 FIELD20              OIL/GAS FIELD NUMBER 20                                                        .333       .333
    27-SEP-13 FIELD21              OIL/GAS FIELD NUMBER 21                                                         .25        .25
    28-SEP-13 FIELD22              OIL/GAS FIELD NUMBER 22                                                          .2         .2
    29-SEP-13 FIELD23              OIL/GAS FIELD NUMBER 23                                                        .167       .167
    01-OCT-13 FIELD25              OIL/GAS FIELD NUMBER 25                                                          .5         .5
    02-OCT-13 FIELD26              OIL/GAS FIELD NUMBER 26                                                        .333       .333
    03-OCT-13 FIELD27              OIL/GAS FIELD NUMBER 27                                                         .25        .25
    04-OCT-13 FIELD28              OIL/GAS FIELD NUMBER 28                                                          .2         .2
    05-OCT-13 FIELD29              OIL/GAS FIELD NUMBER 29                                                        .167       .167
    09-SEP-13 FIELD3               OIL/GAS FIELD NUMBER 3                                                          .25        .25
    07-OCT-13 FIELD31              OIL/GAS FIELD NUMBER 31                                                          .5         .5
    08-OCT-13 FIELD32              OIL/GAS FIELD NUMBER 32                                                        .333       .333
    09-OCT-13 FIELD33              OIL/GAS FIELD NUMBER 33                                                         .25        .25
    10-OCT-13 FIELD34              OIL/GAS FIELD NUMBER 34                                                          .2         .2
    11-OCT-13 FIELD35              OIL/GAS FIELD NUMBER 35                                                        .167       .167
    13-OCT-13 FIELD37              OIL/GAS FIELD NUMBER 37                                                          .5         .5
    14-OCT-13 FIELD38              OIL/GAS FIELD NUMBER 38                                                        .333       .333
    15-OCT-13 FIELD39              OIL/GAS FIELD NUMBER 39                                                         .25        .25
    10-SEP-13 FIELD4               OIL/GAS FIELD NUMBER 4                                                           .2         .2
    16-OCT-13 FIELD40              OIL/GAS FIELD NUMBER 40                                                          .2         .2
    17-OCT-13 FIELD41              OIL/GAS FIELD NUMBER 41                                                        .167       .167
    19-OCT-13 FIELD43              OIL/GAS FIELD NUMBER 43                                                          .5         .5
    20-OCT-13 FIELD44              OIL/GAS FIELD NUMBER 44                                                        .333       .333
    21-OCT-13 FIELD45              OIL/GAS FIELD NUMBER 45                                                         .25        .25
    22-OCT-13 FIELD46              OIL/GAS FIELD NUMBER 46                                                          .2         .2
    23-OCT-13 FIELD47              OIL/GAS FIELD NUMBER 47                                                        .167       .167
    25-OCT-13 FIELD49              OIL/GAS FIELD NUMBER 49                                                          .5         .5
    11-SEP-13 FIELD5               OIL/GAS FIELD NUMBER 5                                                         .167       .167
    26-OCT-13 FIELD50              OIL/GAS FIELD NUMBER 50                                                        .333       .333
    27-OCT-13 FIELD51              OIL/GAS FIELD NUMBER 51                                                         .25        .25
    28-OCT-13 FIELD52              OIL/GAS FIELD NUMBER 52                                                          .2         .2
    29-OCT-13 FIELD53              OIL/GAS FIELD NUMBER 53                                                        .167       .167
    31-OCT-13 FIELD55              OIL/GAS FIELD NUMBER 55                                                          .5         .5
    01-NOV-13 FIELD56              OIL/GAS FIELD NUMBER 56                                                        .333       .333
    02-NOV-13 FIELD57              OIL/GAS FIELD NUMBER 57                                                         .25        .25
    03-NOV-13 FIELD58              OIL/GAS FIELD NUMBER 58                                                          .2         .2
    04-NOV-13 FIELD59              OIL/GAS FIELD NUMBER 59                                                        .167       .167
    06-NOV-13 FIELD61              OIL/GAS FIELD NUMBER 61                                                          .5         .5
    07-NOV-13 FIELD62              OIL/GAS FIELD NUMBER 62                                                        .333       .333
    08-NOV-13 FIELD63              OIL/GAS FIELD NUMBER 63                                                         .25        .25
    09-NOV-13 FIELD64              OIL/GAS FIELD NUMBER 64                                                          .2         .2
    10-NOV-13 FIELD65              OIL/GAS FIELD NUMBER 65                                                        .167       .167
    12-NOV-13 FIELD67              OIL/GAS FIELD NUMBER 67                                                          .5         .5
    13-NOV-13 FIELD68              OIL/GAS FIELD NUMBER 68                                                        .333       .333
    14-NOV-13 FIELD69              OIL/GAS FIELD NUMBER 69                                                         .25        .25
    13-SEP-13 FIELD7               OIL/GAS FIELD NUMBER 7                                                           .5         .5
    15-NOV-13 FIELD70              OIL/GAS FIELD NUMBER 70                                                          .2         .2
    16-NOV-13 FIELD71              OIL/GAS FIELD NUMBER 71                                                        .167       .167
    18-NOV-13 FIELD73              OIL/GAS FIELD NUMBER 73                                                          .5         .5
    19-NOV-13 FIELD74              OIL/GAS FIELD NUMBER 74                                                        .333       .333
    20-NOV-13 FIELD75              OIL/GAS FIELD NUMBER 75                                                         .25        .25
    21-NOV-13 FIELD76              OIL/GAS FIELD NUMBER 76                                                          .2         .2
    22-NOV-13 FIELD77              OIL/GAS FIELD NUMBER 77                                                        .167       .167
    24-NOV-13 FIELD79              OIL/GAS FIELD NUMBER 79                                                          .5         .5
    14-SEP-13 FIELD8               OIL/GAS FIELD NUMBER 8                                                         .333       .333
    25-NOV-13 FIELD80              OIL/GAS FIELD NUMBER 80                                                        .333       .333
    26-NOV-13 FIELD81              OIL/GAS FIELD NUMBER 81                                                         .25        .25
    27-NOV-13 FIELD82              OIL/GAS FIELD NUMBER 82                                                          .2         .2
    28-NOV-13 FIELD83              OIL/GAS FIELD NUMBER 83                                                        .167       .167
    30-NOV-13 FIELD85              OIL/GAS FIELD NUMBER 85                                                          .5         .5
    01-DEC-13 FIELD86              OIL/GAS FIELD NUMBER 86                                                        .333       .333
    02-DEC-13 FIELD87              OIL/GAS FIELD NUMBER 87                                                         .25        .25
    03-DEC-13 FIELD88              OIL/GAS FIELD NUMBER 88                                                          .2         .2
    04-DEC-13 FIELD89              OIL/GAS FIELD NUMBER 89                                                        .167       .167
    15-SEP-13 FIELD9               OIL/GAS FIELD NUMBER 9                                                          .25        .25
    06-DEC-13 FIELD91              OIL/GAS FIELD NUMBER 91                                                          .5         .5
    07-DEC-13 FIELD92              OIL/GAS FIELD NUMBER 92                                                        .333       .333
    08-DEC-13 FIELD93              OIL/GAS FIELD NUMBER 93                                                         .25        .25
    09-DEC-13 FIELD94              OIL/GAS FIELD NUMBER 94                                                          .2         .2
    10-DEC-13 FIELD95              OIL/GAS FIELD NUMBER 95                                                        .167       .167
    12-DEC-13 FIELD97              OIL/GAS FIELD NUMBER 97                                                          .5         .5
    13-DEC-13 FIELD98              OIL/GAS FIELD NUMBER 98                                                        .333       .333
    14-DEC-13 FIELD99              OIL/GAS FIELD NUMBER 99                                                         .25        .25
     
    84 ROWS selected.
     
    SQL>