Count records per month

Hi,
there is two date columns "from" and "to" in the table "contracts" (contract validity, e.g. from 01.03.2012 to 31.12.2014). How to select the count of valid contratc per month ?
Result:
month valid contracts
03.2012 2341
04.2012 2355
Thanks in advance,
Michel

Hi, Michel,
Michel77 wrote:
Hi,
there is two date columns "from" and "to" in the table "contracts" (contract validity, e.g. from 01.03.2012 to 31.12.2014). How to select the count of valid contratc per month ?So, if the start_date is in March, 2012, and the end_date is in December, 2014, do you want that 1 contract to be counted 34 times, once for each month from March 2012 through December 2014?
Here's one way:
WITH     month_range     AS
     SELECT     TRUNC (MIN (start_date, 'MONTH'))     AS start_month
     ,     TRUNC (MAX (end_date,     'MONTH'))     AS end_month
     FROM     contracts
,     all_months     AS
     SELECT     ADD_MONTHS ( start_month
                  , LEVEL - 1
                  )          AS this_month
     ,     ADD_MONTHS ( start_month
                  , LEVEL
                  )          AS next_month
     FROM    month_range
     CONNECT BY     LEVEL <= 1 + MONTHS_BETWEEN ( end_month
                                             , start_month
SELECT       a.this_month
,       COUNT (c.start_date)     AS valid_contracts
FROM            all_months  a
LEFT OUTER JOIN contracts   c  ON  c.start_date          <  a.next_month
                              AND c.end_date          >= a.this_month
GROUP BY  a.this_month
ORDER BY  a.this_month
I hope this answers your question.
If not, post a little sample data (CREATE TABLE and INSERT statements, relevant columns only), and also post the results you want from that data.
Point out where the statment above is getting the wrong results, and explain, using specific examples, how you get the right results from the given data in those places.
Always say which version of Oracle you're using (e.g., 11.2.0.2.0).
See the forum FAQ {message:id=9360002}

Similar Messages

  • Chart: amount (count) of records per month (and year). How?

    I need to create a chart eventually. Can't get what formula to use. The data is:
    1 | 15 Jan
    2 | 20 Jan
    25 | 14 Mar
    26 | 16 Mar
    28 | 20 Mar
    The chart should show amount(count) of records per month(and year). So in this example:
    Jan: 2
    Mar: 3
    Hm... totally lost. Any tips?

    To do this it would be best to add a column in which you isolate the month from the rest of the date information. Here's an example:
    You may hide the Month-Isolated column if it impacts your presentation.
    The Month-Isolated formula is: =IF(ISBLANK(B), "", (MONTH(B)))
    The formula for the count in the Summary table is: =COUNTIF(Data Table :: $C, COLUMN())
    Hope this gets you on your way.
    Regards,
    Jerry

  • How to find the number of records per months  in cube

    Hi,
      how to find the number of records per months for my all cubes?
      Can i use the ListCube transaction to find totl number f records per cube monthwise ?
    Jimmy

    Hi,
    Here is a program to generate no of records and list of ODS and Cubes in Active version.Schedule this program in background and create a cube to load this information and schedule to the data from the file generated by the program. Schedule this all per you requirement.
    1.Copy the code into your Z<programname> from Se38.
    2.change the FILENAME in CALL FUNCTION 'GUI_DOWNLOAD' in the program to the location from where you can pick the information to load data to cube(eg Application server).
    3.Save program.
    4.Schedule the program in background as required
    5.Create cube with infoobjects to hold no of records and Infoprovider name
    6.Load this cube based on event after the program job is done.
    Hence you can report on this cube to see no of records in  CUBE or ODS in your box.
    Please find the code below.
    Cheers,
    Kavitha Kamesh.
    types: begin of itabs ,
          tabname type dd02l-tabname,
          end of itabs.
    data: itab type itabs occurs 0 with header line.
    data: counter type i.
    data: begin of itab1 occurs 0,
    tabname type dd02l-tabname,
    counter type i,
    end of itab1.
    DATA: ITABTABNAME TYPE STRING.
    DATA: LENGTH TYPE I.
    DATA: OBJECT(30).
    data: str(6) type c.
    select  tabname from dd02l into table itab where ( tabname LIKE  '/BIC/F%' or tabname LIKE  '/BIC/A%00' )
    and TABCLASS = 'TRANSP' and AS4LOCAL = 'A'.
    loop at itab.
      select count(*) from (itab-tabname) into counter.
      str = itab-tabname.
      if str = '/BIC/F'.
    LENGTH  = STRLEN( ITAB-TABNAME ).
      SHIFT  itab-tabname BY 6 PLACES LEFT.
    ELSEIf  str = '/BIC/A'.
      SHIFT  itab-tabname BY 6 PLACES LEFT.
      LENGTH  = STRLEN( ITAB-TABNAME ).
    LENGTH = LENGTH - 2.
    endif.
      itab1-tabname = itab-tabname(LENGTH).
      append itab1.
      itab1-counter = counter.
      clear itab-tabname.
      clear:  COUNTER.
    endloop.
    *********** itab1
    loop at itab1.
    write:/ itab1-tabname, itab1-counter.
    endloop.
    CALL FUNCTION 'GUI_DOWNLOAD'
      EXPORTING
    *   BIN_FILESIZE                    =
        FILENAME                        = 'c:records.xls'
        FILETYPE                        = 'ASC'
    *   APPEND                          = ' '
        WRITE_FIELD_SEPARATOR           = ','
    *   HEADER                          = '00'
    *   TRUNC_TRAILING_BLANKS           = ' '
    *   WRITE_LF                        = 'X'
    *   COL_SELECT                      = ' '
    *   COL_SELECT_MASK                 = ' '
    *   DAT_MODE                        = ' '
    *   CONFIRM_OVERWRITE               = ' '
    *   NO_AUTH_CHECK                   = ' '
    *   CODEPAGE                        = ' '
    *   IGNORE_CERR                     = ABAP_TRUE
    *   REPLACEMENT                     = '#'
    *   WRITE_BOM                       = ' '
    *   TRUNC_TRAILING_BLANKS_EOL       = 'X'
    *   WK1_N_FORMAT                    = ' '
    *   WK1_N_SIZE                      = ' '
    *   WK1_T_FORMAT                    = ' '
    *   WK1_T_SIZE                      = ' '
    * IMPORTING
    *   FILELENGTH                      =
      TABLES
        DATA_TAB                        = itab1
    *   FIELDNAMES                      =
    * EXCEPTIONS
    *   FILE_WRITE_ERROR                = 1
    *   NO_BATCH                        = 2
    *   GUI_REFUSE_FILETRANSFER         = 3
    *   INVALID_TYPE                    = 4
    *   NO_AUTHORITY                    = 5
    *   UNKNOWN_ERROR                   = 6
    *   HEADER_NOT_ALLOWED              = 7
    *   SEPARATOR_NOT_ALLOWED           = 8
    *   FILESIZE_NOT_ALLOWED            = 9
    *   HEADER_TOO_LONG                 = 10
    *   DP_ERROR_CREATE                 = 11
    *   DP_ERROR_SEND                   = 12
    *   DP_ERROR_WRITE                  = 13
    *   UNKNOWN_DP_ERROR                = 14
    *   ACCESS_DENIED                   = 15
    *   DP_OUT_OF_MEMORY                = 16
    *   DISK_FULL                       = 17
    *   DP_TIMEOUT                      = 18
    *   FILE_NOT_FOUND                  = 19
    *   DATAPROVIDER_EXCEPTION          = 20
    *   CONTROL_FLUSH_ERROR             = 21
    *   OTHERS                          = 22
    IF SY-SUBRC <> 0.
    * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    *         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.

  • Count days per month

    dear members,
    I have been provided with the date range.
    i want to calculate the no. of days for each month, within the above date range.
    e.g. date1='10-01-2011' and date2='18-03-2011'
    for month=01 count days=22
    for month=02 count days=28
    for month=03 count days=18
    thanks
    teefu
    developer

    WITH     parameters     AS
         SELECT     TO_DATE ( '10-01-2011'
                   , 'DD-MM-YYYY'
                   )     AS start_dt
         ,     TO_DATE ( '18-03-2011'
                   , 'DD-MM-YYYY'
                   )     AS end_dt
         FROM     dual
    SELECT     TO_CHAR ( start_dt + LEVEL - 1
              , 'FMMonth YYYY'
              )     AS month
    ,     COUNT (*)     AS days
    FROM     parameters
    CONNECT BY     LEVEL <= 1 + end_dt - start_dt
    GROUP BY TO_CHAR ( start_dt + LEVEL - 1
              , 'FMMonth YYYY'
    ORDER BY MIN (LEVEL)
    duplicate thread already one has given the above answer
    count days of the month
    Edited by: LPS on Jul 21, 2011 2:16 AM

  • I need to display, a record  count on a column within a table per month

    This is what i currently have...but not what i am looking for...
    select creation_date,
    sum(DECODE(to_char(creation_date, 'MM/DD/YYYY HH24:MI:SS'),'01', 1,0)) JAN,
    sum(DECODE(to_char(creation_date, 'MM/DD/YYYY HH24:MI:SS'),'02', 1,0)) FEB,
    sum(DECODE(to_char(creation_date, 'MM/DD/YYYY HH24:MI:SS'),'03', 1,0)) MAR,
    sum(DECODE(to_char(creation_date, 'MM/DD/YYYY HH24:MI:SS'),'04', 1,0)) APR,
    sum(DECODE(to_char(creation_date, 'MM/DD/YYYY HH24:MI:SS'),'05', 1,0)) MAY,
    sum(DECODE(to_char(creation_date, 'MM/DD/YYYY HH24:MI:SS'),'06', 1,0)) JUN,
    sum(DECODE(to_char(creation_date, 'MM/DD/YYYY HH24:MI:SS'),'07', 1,0)) JUL,
    sum(DECODE(to_char(creation_date, 'MM/DD/YYYY HH24:MI:SS'),'08', 1,0)) AUG,
    sum(DECODE(to_char(creation_date, 'MM/DD/YYYY HH24:MI:SS'),'09', 1,0)) SEP,
    sum(DECODE(to_char(creation_date, 'MM/DD/YYYY HH24:MI:SS'),'10', 1,0)) OCT,
    sum(DECODE(to_char(creation_date, 'MM/DD/YYYY HH24:MI:SS'),'11', 1,0)) NOV,
    sum(DECODE(to_char(creation_date, 'MM/DD/YYYY HH24:MI:SS'),'12', 1,0)) DEC,
    count(*) TOTAL
    from applsys.fnd_user
    where creation_date > to_date('01/01/2010','MM-DD-YYYY')
    GROUP BY creation_date
    order by 1;
    I need the amount of users added to be displayed per month..together with a total...
    output similar to this:
    COYDIV      JAN     FEB     MAR     APR     MAY     JUN     JUL     AUG     SEP     OCT     NOV     DEC      TOTAL
    101     4     0     1     0     0     0     0     0     0     0     0     0     5
    102     0     3     0     0     0     0     0     0     0     0     0     0     3
    103     0     1     1     0     0     0     0     0     0     0     0     0     2
    104     0     1     0     0     0     0     0     0     0     0     0     0     1
    105     0     0     1     0     0     0     0     0     0     0     0     0     1
    107     1     0     0     0     0     0     0     0     0     0     0     0     1
    108     0     1     0     0     0     0     0     0     0     0     0     0     1
    109     2     0     2     0     0     0     0     0     0     0     0     0     4
    117     0     0     2     0     0     0     0     0     0     0     0     0     2
    118     0     0     1     0     0     0     0     0     0     0     0     0     1
    119     0     0     1     0     0     0     0     0     0     0     0     0     1
    122     0     1     0     0     0     0     0     0     0     0     0     0     1
    201     1     0     0     0     0     0     0     0     0     0     0     0     1
    401     4     0     1     0     0     0     0     0     0     0     0     0     5
    403     0     1     0     0     0     0     0     0     0     0     0     0     1
    603     0     0     1     0     0     0     0     0     0     0     0     0     1
    609     0     0     3     0     0     0     0     0     0     0     0     0     3
    612     1     0     0     0     0     0     0     0     0     0     0     0     1
    615     0     2     0     0     0     0     0     0     0     0     0     0     2
    619     0     0     1     0     0     0     0     0     0     0     0     0     1
    2001     0     2     2     0     0     0     0     0     0     0     0     0     4
    2201     0     1     2     0     0     0     0     0     0     0     0     0     3
    2301     0     0     1     0     0     0     0     0     0     0     0     0     1
    2302     0     1     0     0     0     0     0     0     0     0     0     0     1
    2303     0     0     1     0     0     0     0     0     0     0     0     0     1
    5001     0     2     3     0     0     0     0     0     0     0     0     0     5
    TOTAL     13     16     24     0     0     0     0     0     0     0     0     0     53
    any ideas on how i can remedy my script

    Ok here goes
    1. boldVersion 11.1.0.7.0
    2. boldsample data
    "USER_ID","USER_NAME", "LAST_UPDATE_DATE", "LAST_UPDATED_BY", "CREATION_DATE", "CREATED_BY","LAST_UPDATE_LOGIN","SESSION_NUMBER","START_DATE","END_DATE","DESCRIPTION", "LAST_LOGON_DATE","PASSWORD_DATE","PASSWORD_ACCESSES_LEFT","PASSWORD_LIFESPAN_ACCESSES","PASSWORD_LIFESPAN_DAYS","EMPLOYEE_ID","EMAIL_ADDRESS","FAX","CUSTOMER_ID","SUPPLIER_ID","WEB_PASSWORD","USER_GUID","GCN_CODE_COMBINATION_ID","PERSON_PARTY_ID"
    2289, [email protected], 3/24/2010 12:37:23 PM, 2289, 1/18/2010 12:22:49 PM, 1295, 4975366, 24, 1/18/2010, ,Cecilia Buthelezi,4/6/2010 8:46:36 AM,3/24/2010 12:37:23 PM,,,30,8180,[email protected],,,,,,,20702
    2269, [email protected], 3/24/2010 3:40:47 PM, 2269, 1/14/2010 3:42:58 PM, 1295, 4917252, 10, 1/14/2010, ,Heather Summers, 3/24/2010 3:40:48 PM,3/24/2010 3:40:47 PM,,,30,2237,[email protected],,,,,,,7169
    3. boldexpected out put
    JAN     FEB     MAR     APR     MAY     JUN     JUL     AUG     SEP     OCT     NOV     DEC      TOTAL
    4     0     1     0     0     0     0     0     0     0     0     0     5
    0     3     0     0     0     0     0     0     0     0     0     0     3
    TOTAL     13     16     24     0     0     0     0     0     0     0     0     0     53
    etc
    4. boldExplanation of expected output
    a select statement using the creation date, for users added per month and total users added for months in which users were added.
    thanks
    Edited by: user11978142 on Apr 6, 2010 5:46 AM

  • I want to diaplay my records from the databasewith 10 records per page. i l

    i want to diaplay my records from the databasewith 10 records per page. i learned that it can be done through pagination . Please can anyone there help me and give me the code of how to page my records in my jsp pages
    I have small code ,but its not working....
    below is the code....
    public ResultSet codeResult(int i){
    if(dataSource!= null){
         try {
                             con=dataSource.getConnection();
         stmt=con.createStatement (ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
         int maxRows=stmt.getMaxRows();
         System.out.println("the maxRows is:"+maxRows);
         System.out.println("the I value is:"+i);
         if((i < 0) || (i > maxRows)){
              i=0;
         stmt.setFetchSize(i);
         long t = System.currentTimeMillis();
         rs=stmt.executeQuery("select asc_code,countrycode,asc_name,asc_address1,asc_address2,asc_city,asc_country,asc_region,asc_contact_person,asc_contact_no,asc_email_id,asc_fax_no,nso_incharge,nso_email,ar_ap_code from asc_master order by asc_code asc");
    but,its giving all records...
    any one help me on this........
    Thank you,
    D.Nagireddy.                    
                        } catch (SQLException e) {
                             e.printStackTrace();
              return rs;
              }

    hey, here my code for paging. hope it helps...
         public void DueRecordInfo(int page,int MAX_PER_PAGE)
              con = new DBConnection().getConnection();
             try
                     Statement stmt = con.createStatement();
                     String sqlcount = "SELECT COUNT(*) FROM INFO WHERE TO_DATE(DATEUPDATED,'Month DD, YYYY') < ADD_MONTHS(SYSDATE,-6) AND OBSOLETE LIKE 'No'";
                     ResultSet rscount = stmt.executeQuery(sqlcount);     
                    rscount.next();
                    total_row_count = rscount.getInt(1);
                  lowerbound = (page * MAX_PER_PAGE - (MAX_PER_PAGE))+1;
                  upperbound = lowerbound - 1 + MAX_PER_PAGE;
                  String sql = "Select * from "+
                                    "(SELECT row_number() over(ORDER BY TO_DATE(DATEUPDATED,'Month DD, YYYY') DESC) AS RN,ID,SPECNO,REVISEDNO,DATEREVISED,TITLE,ORIGINATOR,DCBNUMBER,DCBLOCATION,OBSOLETE,DATEOBSOLETE,WORDFILE,PDFFILE,DATEUPDATED FROM INFO WHERE TO_DATE(DATEUPDATED,'Month DD, YYYY') < ADD_MONTHS(SYSDATE,-6) AND OBSOLETE LIKE 'No') " +
                                    "WHERE RN BETWEEN "+ lowerbound + " AND " +upperbound;
                   ResultSet rs = stmt.executeQuery(sql);
                  while (rs.next())
                         id.add(num, rs.getString("ID"));
                         specno.add(num, rs.getString("SPECNO"));
                         revisedno.add(num, rs.getString("REVISEDNO"));
                       daterevised.add(num, rs.getString("DATEREVISED"));
                       title.add(num, rs.getString("TITLE"));
                       originator.add(num, rs.getString("ORIGINATOR"));
                       dcbnumber.add(num, rs.getString("DCBNUMBER"));
                       dcblocation.add(num, rs.getString("DCBLOCATION"));
                       obsolete.add(num, rs.getString("OBSOLETE"));
                       dateobsolete.add(num, rs.getString("DATEOBSOLETE"));
                       wordfile.add(num, rs.getString("WORDFILE"));
                       pdffile.add(num, rs.getString("PDFFILE"));
                       dateupdated.add(num, rs.getString("DATEUPDATED"));
                         num++;
                   con.close();
                   rscount.close();
                   rs.close();
                   stmt.close();
             }

  • How to find out the Transactions used per month & the USER who used that

    Hi,
    1)How to find out the Transactions used per month & the USER who used that?
    2)and can i get the above same for minimum 20 month?
    System : SAP- Enterprise Core Component.

    You can use my program...
    *& Report  Z_ABAP_TCODE_MONITOR
    *****&  Program Type          : Report                                 *
    *****&  Title                 : Z_ABAP_TCODE_MONITOR                   *
    *****&  Transaction code      : ZTCODE_USAGE                           *
    *****&  Developer name        : Shailendra Kolakaluri                  *
    *****&  Deveopment start date : 26 th Dec 2011                         *
    *****&  Development Package   : ZDEV                                   *
    *****&  Transport No          : DEVK906086                                       *
    *****&  Program Description   : This program is to display
    *List all tcodes executed during previous day.
    *& Show the number of users executing tcodes
    *& Modification history
    REPORT  Z_ABAP_TCODE_MONITOR.
    *& List all tcodes executed during previous day.
    *& Show the number of users executing tcodes
    TYPE-POOLS : slis.
    DATA: ind TYPE i,
          fcat TYPE slis_t_fieldcat_alv WITH HEADER LINE,
          layout TYPE slis_layout_alv,
          variant TYPE disvariant,
          events  TYPE slis_t_event WITH HEADER LINE,
          heading TYPE slis_t_listheader WITH HEADER LINE.
    *REPORT  z_report_usage.
    TYPES: BEGIN OF zusertcode,
      date   TYPE swncdatum,
      user   TYPE swncuname,
      mandt     TYPE swncmandt,
      tcode     TYPE swnctcode,
      report TYPE swncreportname,
      count     TYPE swncshcnt,
    END OF zusertcode.
    *data   : date type n.
    DATA: t_usertcode  TYPE swnc_t_aggusertcode,
          wa_usertcode TYPE swncaggusertcode,
          wa           TYPE zusertcode,
          t_ut         TYPE STANDARD TABLE OF zusertcode,
          wa_result    TYPE zusertcode,
          t_result     TYPE STANDARD TABLE OF zusertcode.
    PARAMETER: month TYPE dats DEFAULT sy-datum.
    *PARAMETER: date TYPE dats.
    *select-options : username for wa_usertcode-account.
    START-OF-SELECTION.
    PERFORM get_data.
    PERFORM get_fieldcatalog.
      PERFORM set_layout.
    PERFORM get_event.
    PERFORM get_comment.
      PERFORM display_data.
    FORM get_data .
    *date = sy-datum - 2 .
    After start-of-selection add this line (parameter Month required 01 as day).
      concatenate month+0(6) '01' into month.
      CALL FUNCTION 'SWNC_COLLECTOR_GET_AGGREGATES'
        EXPORTING
          component     = 'TOTAL'
          ASSIGNDSYS    = 'DEV'
          periodtype    = 'M'
          periodstrt    = month
        TABLES
          usertcode     = t_usertcode
        EXCEPTIONS
          no_data_found = 1
          OTHERS        = 2.
      wa-date  = month.
    *wa-date  = date.
      wa-mandt = sy-mandt.
    wa_usertcode-account = username.
      LOOP AT t_usertcode INTO wa_usertcode.
        wa-user = wa_usertcode-account.
        IF wa_usertcode-entry_id+72 = 'T'.
          wa-tcode  = wa_usertcode-entry_id.
          wa-report = space.
        ELSE.
          wa-tcode  = space.
          wa-report = wa_usertcode-entry_id.
        ENDIF.
        COLLECT wa INTO t_ut.
      ENDLOOP.
      SORT t_ut BY report ASCENDING.
      CLEAR: wa, wa_result.
    endform.
    FORM get_fieldcatalog .
    fcat-tabname     = 't_ut'.
    fcat-fieldname   = 'DATE'.
    fcat-seltext_l   = 'Date'.
    fcat-key         = 'X'.
    APPEND fcat.
      CLEAR fcat.
      fcat-tabname     = 't_ut'.
      fcat-fieldname   = 'MANDT'.
      fcat-seltext_l   = 'Client'.
      fcat-key         = 'X'.
      APPEND fcat.
      CLEAR fcat.
      fcat-tabname     = 't_ut'.
      fcat-fieldname   = 'USER'.
      fcat-seltext_l   = 'User Name'.
      fcat-key         = 'X'.
      APPEND fcat.
      CLEAR fcat.
      fcat-tabname     = 't_ut'.
      fcat-fieldname   = 'TCODE'.
      fcat-seltext_l   = 'Transaction Code'.
      fcat-key         = 'X'.
      APPEND fcat.
    ENDFORM.
    *&      Form  SET_LAYOUT
          text
    -->  p1        text
    <--  p2        text
    FORM set_layout .
      layout-colwidth_optimize = 'X'.
    ENDFORM.                    " SET_LAYOUT
    *&      Form  GET_EVENT
          text
    -->  p1        text
    <--  p2        text
    *FORM get_event .
    events-name = slis_ev_top_of_page.
    events-form = 'TOP_OF_PAGE'.
    APPEND events.
    *ENDFORM.                    " GET_EVENT
    **&      Form  GET_COMMENT
          text
    -->  p1        text
    <--  p2        text
    *FORM get_comment .
    DATA: text(30).
    text = 'Billing Report'.
    heading-typ = 'H'.
    heading-info = text.
    APPEND heading.
    *ENDFORM.                    " GET_COMMENT
    **&      Form  top_of_page
          text
    -->  p1        text
    <--  p2        text
    *FORM top_of_page .
    CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
       EXPORTING
         it_list_commentary       = heading[]
      I_LOGO                   =
      I_END_OF_LIST_GRID       =
    *ENDFORM.                    " top_of_page
    *&      Form  DISPLAY_DATA
          text
    -->  p1        text
    <--  p2        text
    FORM display_data .
      sort t_ut[].
    DELETE ADJACENT DUPLICATES FROM t_ut[] COMPARING ALL FIELDS.
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
        EXPORTING
          i_callback_program = sy-cprog
          is_layout          = layout
          it_fieldcat        = fcat[]
          i_save             = 'A'
          is_variant         = variant
          it_events          = events[]
        TABLES
          t_outtab           = t_ut
        EXCEPTIONS
          program_error      = 1
          OTHERS             = 2.
      IF sy-subrc <> 0.
        MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
                WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
      ENDIF.
    ENDFORM.                    " DISPLAY_DATA

  • Count Days in month

    Hi Team members,
    we are working on a budgeting application and stuck on below Research, please assist/advise is there any built-in Function to count Days in a Month which we can use or a work around .
    Requirement:
    To calculate budgeted Expenses per month, user will enter the daily budgeted expenses for a month and it will multiple with total number of days in a month via formula. same thing happens to some revenue items.
    Note:
    every months contains different number of Days which will result in change in Expense/Revenue figures.
    e.g
    Daily Expense for Jan will be $100/day
    total days in Jan = 31
    Result will be 31*100 = $3100 expense in Jan
    but in Feb it will be
    Daily Expense for Feb will be $100/day
    total days in Jan = 28
    Result will be 28*100 = $2800 expense in Feb
    Regards,
    Alee

    Dear Alp,
    Thanks for the Code!!!
    Note:
    In general terms the algorithm for calculating a leap year is as follows...
    A year will be a leap year if it is divisible by 4 but not by 100. If a year is divisible by 4 and by 100, it is not a leap year unless it is also divisible by 400.
    Thus years such as 1996, 1992, 1988 and so on are leap years because they are divisible by 4 but not by 100. For century years, the 400 rule is important. Thus, century years 1900, 1800 and 1700 while all still divisible by 4 are also exactly divisible by 100. As they are not further divisible by 400, they are not leap years.
    Regards,
    Alee

  • Count records for a specific date range

    Hi,
    I am using BI Publisher with Siebel 8.1.1.1. I have a monthly report where I want to count the number of service requests entered per customer per month.
    I am using the following expression that works for one month:
    <?count(ssServiceRequest[ssSeverity[.='1-Critical'] and xdoxslt:date_diff('d',psfn:getCanonicalDate(ssCreated), xdoxslt:current_date($_XDOLOCALE,$_XDOTIMEZONE), $_XDOLOCALE, $_XDOTIMEZONE) <=28])?>
    However, I want to be able to specify a specific date range for my count, i.e ssCreated >= '01/02/2011' and <= '28/02/2011', as opposed to count for the past 28 days. Can you please advise what syntax I can use to specify a date range?
    Any help will be greatly appreciated!
    Claire

    Hello,
    Many many thanks for your reply.
    I'm doing as you suggest and am using the date_diff to the end of the period in question. I've tried the following to get the number of Service Requests with Severity 1-Critical, created in Jan 2011, feb 2011:
    <?count(ssServiceRequest[ssSeverity[.='1-Critical'] and xdoxslt:date_diff('d', (psfn:getCanonicalDate(ssCreated), $_XDOLOCALE, $_XDOTIMEZONE), '2011-01-31', $_XDOLOCALE, $_XDOTIMEZONE) <=31])?>
    <?count(ssServiceRequest[ssSeverity[.='1-Critical'] and xdoxslt:date_diff('d', (psfn:getCanonicalDate(ssCreated), $_XDOLOCALE, $_XDOTIMEZONE), '2011-02-28', $_XDOLOCALE, $_XDOTIMEZONE) <=28])?>
    In my xml sample data that I'm using I have 2 service requests that mean the criteria for Jan, yet when I run my report I'm getting '0'. The problem seems to be with my end of period date '2011-01-31'. I've also tried with both start and end period date (using a negative value as per your suggestion), but I still get '0':
    <?count(ssServiceRequest[ssSeverity[.='1-Critical'] and xdoxslt:date_diff('d', (psfn:getCanonicalDate(ssCreated), $_XDOLOCALE, $_XDOTIMEZONE), '2011-01-01', $_XDOLOCALE, $_XDOTIMEZONE) <=-31 and xdoxslt:date_diff('d', (psfn:getCanonicalDate(ssCreated), $_XDOLOCALE, $_XDOTIMEZONE), '2011-01-31', $_XDOLOCALE, $_XDOTIMEZONE) <=31])?>
    Many thanks,
    Claire

  • A query with workingdays per month per persons per period

    Can anyone help me on the way in building a difficult SQL query?
    I work with Oracle SQL. It is intended to calculate over a certain period, to find the working days for each month for each person.
    I have a working query for calculate the number of days for 1 months minus holidays
    Select count (*) NUM_WORK_DAYS
    From (
    Select to_date ('01-01-2010 ',' dd-mm-yyyy ') + ROWNUM-1 as day
    From all_objects
    Where ROWNUM <to_number (to_char (last_day ('01-01-2010 '), DD')) + 1)
    Where to_number (to_char (day, 'd')) between 1 and 5
    And not exists (select NULL
    From HOLIDAY
    Where Holiday.hol=day)
    There is a datetable with the following structure where I can get the periods:
    DATES
    YEAR | MONTH | WEEK | SD
    2010 | 201002 | 201006 | 09/02/2010
    All required months are present
    It is intended that the user give a beginning and a end time specify.
    I have a table of workingdays per person named
    CALENDAR
    CAL | MON | TUE | WED | THU | FRI | SAT | SUN
    Person | Y | Y | N | Y | Y | N | N
    And a table of holidays
    HOLIDAY
    CAL | HOL
    Person | 01/01/2010
    How can I combine the query for working days and build a query that returns for multiple people over multiple months the number of workingdays per month? I will ask the user to give a beginning period and a end period
    I am aware that I ask a lot of your time, but I can not imagine the solution myself. Many thanks in advance
    Gr,
    Els

    You can do something like this:
    SQL> select * from calendar;
        PERSON M T W T F S S
             1 Y Y N Y Y N N
             2 Y Y Y Y Y N N
    SQL> select * from holiday;
        PERSON HOL
             1 12-FEB-10
             2 09-FEB-10
    SQL> define start_day=2010-02-01
    SQL> define end_day=2010-02-20
    SQL> with period as (
      2  select DATE '&start_day' start_date, DATE '&end_day' end_date
      3    from dual),
      4  days as (
      5  select start_date+level-1 day
      6    from dual,period
      7  connect by level <= end_date-start_date+1),
      8  mycal as (
      9  select person, 'monday' day, mon works from calendar union all
    10  select person, 'tuesday' day, tue from calendar union all
    11  select person, 'wednesday' day, wed from calendar union all
    12  select person, 'thursday' day, thu from calendar union all
    13  select person, 'friday' day, fri from calendar union all
    14  select person, 'saturday' day, sat from calendar union all
    15  select person, 'sunday' day, sun from calendar
    16  )
    17  select person, count(0)
    18    from mycal c, days d
    19   where c.day = trim(to_char(d.day,'day'))
    20     and c.works='Y'
    21     and not exists (select 1 from holiday h where h.person=c.person and h.hol=d.day)
    22  group by person;
    old   2: select DATE '&start_day' start_date, DATE '&end_day' end_date
    new   2: select DATE '2010-02-01' start_date, DATE '2010-02-20' end_date
        PERSON   COUNT(0)
             1         11
             2         14The PERIOD view is there only to accept start and end date.
    The DAYS view contains all the days of the period
    The MYCAL view unpivotes the calendar days returning 7 rows for each person, a row per weekday
    Max
    http://oracleitalia.wordpress.com

  • Help for total count in a month

    Hello everyone,I am reposting this message with the hope that I will get some help. Please help me I have a deadline to meet and maybe getting late in meeting the deadline.
    Sometime back I had posted about the date function. I have that problem solved now my problem is that after finding all records which against each record I need to find the total count for that month if no records than I have to set it to a 0.
    Here is how my program has been written.
    PROCEDURE extract_materials
    IS
    CURSOR xyz
    BEGIN
    FOR xyz1 IN xyz LOOP
    -- once inside the loop for each of the record from
    the cursor I need to find a total count for that record for everymonth in the year.
    All these records will be instered in to a staging table
    Can you please help me out with this. I really appreciate this.
    Thanks in advance

    Take a look at analytic functions-- they should be just what the doctor ordered.
    Justin

  • Get date by group by per month basis...

    Hello all,
    I am trying to write a query where i want the count per month...so for example...the below query
    select to_char(date, 'MM/DD/YYYY')
    from test
    where rownum < 10;
    TO_CHAR(date
    02/10/2009
    02/10/2009
    02/10/2009
    02/10/2009
    02/10/2009
    05/31/2009
    02/10/2009
    so i want a count on the date, but want it per month basis....
    select count(*), to_char(date, 'MM/DD/YYYY')
    from test
    where rownum < 10
    group by to_char(date, 'MM/DD/YYYY');
    so basically end results should be like below
    count(*) date
    10 Month1
    12 Month2
    13 Month3

    Hi,
    You're GROUPing BY something that changes from day to day.
    You need to GROUP BY something that only changes from month to month, like this:
    SELECT    COUNT (*)
    ,        TO_CHAR (dt, 'MM/YYYY')     -- DATE is not a good column name
    FROM        test
    WHERE       ROWNUM     < 10
    GROUP BY  TO_CHAR (dt, 'MM/YYYY')
    I hope this answers your question.
    If not, post a little sample data (CREATE TABLE and INSERT statements, relevant columns only), and also post the results you want from that data.
    Explain, using specific examples where the query above is not doing what you want, how you get the correct results from the data you posted.

  • How to get count for missing month

    I created a view as follows:
    CREATE OR REPLACE FORCE VIEW "Vinfection1" ("MONTH", "COUNT") AS
    select "MONTH","COUNT" from (
    select to_char(s.pdate,'Mon-yyyy') as month, count(*) as count
    from surproc s, diagnosis_surproc d
    where s.surprocid = d.surprocid and d.diagnosisid in ('506', '507', '508', '509', '510')
    group by to_char(pdate,'Mon-yyyy'))
    order by to_date(month,'Mon-yyyy')
    Some months are missing in the view. I want to put that month and 0 in the view. How to do it?
    Thanks,
    Jennifer

    Hi, Jennifer,
    You need to outer-join to some table or result set (such as all_months, below) that has one roe per month.
    Here's one way:
    CREATE OR REPLACE FORCE VIEW Vinfection1 (month, month_s, cnt) AS
    WITH    all_months     AS
         SELECT  ADD_MONTHS (first_month, LEVEL - 1)     AS month
         FROM     (
                  SELECT  TRUNC (MIN (pdate), 'MONTH')     AS first_month
                  ,         TRUNC (MAX (pdate), 'MONTH')     AS last_month
                  FROM    surproc
         CONNECT BY     LEVEL <= 1 + MONTHS_NETWEEN (last_month, first_month)
    SELECT  a.month
    ,     TO_CHAR (a.month, 'Mon-yyyy')     AS month_s
    ,     COUNT (*)                 AS cnt
    FROM              all_months      a
    LEFT OUTER JOIN      (     surproc               s
                   JOIN   diagnosis_surproc      d  ON   s.surprocid     = d.surprocid
                                          AND  d.diagnosisid     IN ('506', '507', '508', '509', '510')
               )     ON  a.month     = TRUNC (s.pdate)
    GROUP BY  a.month
    /Avoid table- and column names that are non-standatrd (such as names that need double-quotes), or are built-in function names (such as COUNT).
    Don't use ORDER BY in a view. Almost anything you do with the view will cause the ordering to be lost anyway.
    Even if you do have an ORDER BY clause in the view, you'll often want to ORDER BY month. Rather than call TO_DATE whenever you need to sort, I suggest having two month columns; month (whcih is a DATE) for sorting, filtering and joining, and month_s (whcih is a VARCHAR2) for displaying.
    Use ANSI join syntax, especiallly for outer joins.
    I hope this answers your question.
    If not, post a little sample data (CREATE TABLE and INSERT statements, relevant columns only) for all tables involved, and also post the results you want from that data.
    Explain, using specific examples, how you get those results from that data.
    Always say which version of Oracle you're using.
    Edited by: Frank Kulash on Mar 20, 2012 12:03 PM
    Added outer join condition

  • I purchased, the 400 minute per month plan. I can'...

    I purchased, the 400 minute per month plan. I can't make a phone call, and talk for two minutes, Without running out of skype credit. There's a problem with your system. I'm not receiving the benefits of what I paid for.
    My regards,
    goodshepherd9

    I think you may need to contact customer service regarding that matter. Just open the link pasted below to see the instructions on how to get in touch with customer service -
    https://support.skype.com/en/faq/FA1170/how-can-i-contact-skype-customer-service
    IF YOU FOUND OUR POST USEFUL THEN PLEASE GIVE "KUDOS". IF IT HELPED TO FIX YOUR ISSUE PLEASE MARK IT AS A "SOLUTION" TO HELP OTHERS. THANKS!
    ALTERNATIVE SKYPE DOWNLOAD LINKS | HOW TO RECORD SKYPE VIDEO CALLS | HOW TO HANDLE SUSPICIOS CALLS AND MESSAGES

  • Create a field routine to calculate the number of days per month

    Hi Experts,
    I need to create a field routine to count the number of days per month based on 0CALMONTH. Could you give me some inputs on how to do it?
    Thanks!

    Hi,
    Create InfoObejct and then insert it in InfoSource/InfoCube/DSO then write simp,e code for that based on your  0CALMONTH values.
    You just copy and pas this in SE38 and see the result and implement for your requirements.
    REPORT  ztest1.
    Data: zsydt type sy-datum,
          zd(2) type n,
          zm(2) type n,
          zy(4) type n,
          zcmnth TYPE /bi0/oicalmonth,
          znds TYPE /osp/dt_day.
          zsydt = sy-datum.
          zd = '01'.
          zm = zsydt+4(2).
          zy = zsydt+0(4).
          CONCATENATE zy zm zd INTO zsydt.
          CALL FUNCTION '/OSP/GET_DAYS_IN_MONTH'
                EXPORTING
                  iv_date = zsydt
                IMPORTING
                  ev_days = znds.    "No.of days in month.
          write:/ zd.
          write:/ zm.
          write:/ zy.
          write:/ zsydt.
          write:/ znds.
    Thanks
    Reddy

Maybe you are looking for