Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Code Project
  1. Home
  2. Database & SysAdmin
  3. Database
  4. Help in finding the differences in values across sub groups.

Help in finding the differences in values across sub groups.

Scheduled Pinned Locked Moved Database
databasehelp
4 Posts 3 Posters 0 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • A Offline
    A Offline
    aakar
    wrote on last edited by
    #1

    Hi

    I need help in writing a SQL query that gives the difference in values for two consecutive dates.

    My table structure is as follows :

    Collapse | Copy Code
    Symbol Name Dates Outstanding values
    VAN Equity 12/3/2011 0.7995
    VAN Equity 12/4/2011 0.7995
    VAN Equity 12/5/2011 0.7000
    VAN Equity 12/8/2011 0.7000

    I want the output in the following form :

    Collapse | Copy Code
    Symbol Name Dates Difference
    VAN Equity 12/3/2011 0.7995
    VAN Equity 12/4/2011 0
    VAN Equity 12/5/2011 -0.0995
    VAN Equity 12/8/2011 0
    I came up with the below query.

    Collapse | Copy Code
    WITH LHP AS
    (
    SELECT *, ROW_NUMBER() OVER(ORDER BY Dates ) AS rn
    FROM test_table as LI
    )
    SELECT mc.[Outstanding Values] - mp.[Outstanding Values],
    mc.[Outstanding Values] , mp.[Outstanding Values]
    FROM LHP mc
    inner JOIN LHP mp
    ON mc.rn = mp.rn - 1
    The above query works fine if I have just one set of Symbol Names.
    However, if I have my data in the below format :

    Collapse | Copy Code
    Symbol Name Dates Outstanding Values
    VAN Equity 2011-12-03 00:00:00.000 0.7995
    VAN Equity 2011-12-04 00:00:00.000 0.7995
    VAN Equity 2011-12-05 00:00:00.000 0.7
    VAN Equity 2011-12-08 00:00:00.000 0.7
    VAN Equity 2011-12-09 00:00:00.000 0.6
    VIN Equity 2011-12-03 00:00:00.000 0.1
    VIN Equity 2011-12-04 00:00:00.000 0.2
    VIN Equity 2011-12-05 00:00:00.000 0.7
    VIN Equity 2011-12-08 00:00:00.000 0.7
    VIN Equity 2011-12-09 00:00:00.000 0.6
    VAT Equity 2011-12-03 00:00:00.000 0.1
    VAT Equity 2011-12-04 00:00:00.000 0.2
    VAT Equity 2011-12-05 00:00:00.000 0.7
    VAT Equity 2011-12-08 00:00:00.000 0.7
    VAT Equity 2011-12-09 00:00:00.000 0.6
    i.e. multiple sets of Symbol Names distributed across the same set of dates my query gives me the results as shown below : which is not as expected.

    Collapse | Copy Code
    No Outstanding Outstanding
    Name Values Values
    0.6995 0.7995 0.1
    -0.1 0.1 0.2
    -0.5995 0.2 0.7995
    0.0995 0.7995 0.7
    0 0.7 0.7
    0.1 0.7 0.6
    Any help would be greatly appreciated.

    S L 3 Replies Last reply
    0
    • A aakar

      Hi

      I need help in writing a SQL query that gives the difference in values for two consecutive dates.

      My table structure is as follows :

      Collapse | Copy Code
      Symbol Name Dates Outstanding values
      VAN Equity 12/3/2011 0.7995
      VAN Equity 12/4/2011 0.7995
      VAN Equity 12/5/2011 0.7000
      VAN Equity 12/8/2011 0.7000

      I want the output in the following form :

      Collapse | Copy Code
      Symbol Name Dates Difference
      VAN Equity 12/3/2011 0.7995
      VAN Equity 12/4/2011 0
      VAN Equity 12/5/2011 -0.0995
      VAN Equity 12/8/2011 0
      I came up with the below query.

      Collapse | Copy Code
      WITH LHP AS
      (
      SELECT *, ROW_NUMBER() OVER(ORDER BY Dates ) AS rn
      FROM test_table as LI
      )
      SELECT mc.[Outstanding Values] - mp.[Outstanding Values],
      mc.[Outstanding Values] , mp.[Outstanding Values]
      FROM LHP mc
      inner JOIN LHP mp
      ON mc.rn = mp.rn - 1
      The above query works fine if I have just one set of Symbol Names.
      However, if I have my data in the below format :

      Collapse | Copy Code
      Symbol Name Dates Outstanding Values
      VAN Equity 2011-12-03 00:00:00.000 0.7995
      VAN Equity 2011-12-04 00:00:00.000 0.7995
      VAN Equity 2011-12-05 00:00:00.000 0.7
      VAN Equity 2011-12-08 00:00:00.000 0.7
      VAN Equity 2011-12-09 00:00:00.000 0.6
      VIN Equity 2011-12-03 00:00:00.000 0.1
      VIN Equity 2011-12-04 00:00:00.000 0.2
      VIN Equity 2011-12-05 00:00:00.000 0.7
      VIN Equity 2011-12-08 00:00:00.000 0.7
      VIN Equity 2011-12-09 00:00:00.000 0.6
      VAT Equity 2011-12-03 00:00:00.000 0.1
      VAT Equity 2011-12-04 00:00:00.000 0.2
      VAT Equity 2011-12-05 00:00:00.000 0.7
      VAT Equity 2011-12-08 00:00:00.000 0.7
      VAT Equity 2011-12-09 00:00:00.000 0.6
      i.e. multiple sets of Symbol Names distributed across the same set of dates my query gives me the results as shown below : which is not as expected.

      Collapse | Copy Code
      No Outstanding Outstanding
      Name Values Values
      0.6995 0.7995 0.1
      -0.1 0.1 0.2
      -0.5995 0.2 0.7995
      0.0995 0.7995 0.7
      0 0.7 0.7
      0.1 0.7 0.6
      Any help would be greatly appreciated.

      S Offline
      S Offline
      SilimSayo
      wrote on last edited by
      #2

      Export

      Symbol Name Dates Outstanding values
      VAN Equity 12/3/2011 0.7995
      VAN Equity 12/4/2011 0.7995
      VAN Equity 12/5/2011 0.7000
      VAN Equity 12/8/2011 0.7000

      To Excel, Sort by date, insert a column for difference, insert a formula in one cell then drag down the formular for all the other cells.

      1 Reply Last reply
      0
      • A aakar

        Hi

        I need help in writing a SQL query that gives the difference in values for two consecutive dates.

        My table structure is as follows :

        Collapse | Copy Code
        Symbol Name Dates Outstanding values
        VAN Equity 12/3/2011 0.7995
        VAN Equity 12/4/2011 0.7995
        VAN Equity 12/5/2011 0.7000
        VAN Equity 12/8/2011 0.7000

        I want the output in the following form :

        Collapse | Copy Code
        Symbol Name Dates Difference
        VAN Equity 12/3/2011 0.7995
        VAN Equity 12/4/2011 0
        VAN Equity 12/5/2011 -0.0995
        VAN Equity 12/8/2011 0
        I came up with the below query.

        Collapse | Copy Code
        WITH LHP AS
        (
        SELECT *, ROW_NUMBER() OVER(ORDER BY Dates ) AS rn
        FROM test_table as LI
        )
        SELECT mc.[Outstanding Values] - mp.[Outstanding Values],
        mc.[Outstanding Values] , mp.[Outstanding Values]
        FROM LHP mc
        inner JOIN LHP mp
        ON mc.rn = mp.rn - 1
        The above query works fine if I have just one set of Symbol Names.
        However, if I have my data in the below format :

        Collapse | Copy Code
        Symbol Name Dates Outstanding Values
        VAN Equity 2011-12-03 00:00:00.000 0.7995
        VAN Equity 2011-12-04 00:00:00.000 0.7995
        VAN Equity 2011-12-05 00:00:00.000 0.7
        VAN Equity 2011-12-08 00:00:00.000 0.7
        VAN Equity 2011-12-09 00:00:00.000 0.6
        VIN Equity 2011-12-03 00:00:00.000 0.1
        VIN Equity 2011-12-04 00:00:00.000 0.2
        VIN Equity 2011-12-05 00:00:00.000 0.7
        VIN Equity 2011-12-08 00:00:00.000 0.7
        VIN Equity 2011-12-09 00:00:00.000 0.6
        VAT Equity 2011-12-03 00:00:00.000 0.1
        VAT Equity 2011-12-04 00:00:00.000 0.2
        VAT Equity 2011-12-05 00:00:00.000 0.7
        VAT Equity 2011-12-08 00:00:00.000 0.7
        VAT Equity 2011-12-09 00:00:00.000 0.6
        i.e. multiple sets of Symbol Names distributed across the same set of dates my query gives me the results as shown below : which is not as expected.

        Collapse | Copy Code
        No Outstanding Outstanding
        Name Values Values
        0.6995 0.7995 0.1
        -0.1 0.1 0.2
        -0.5995 0.2 0.7995
        0.0995 0.7995 0.7
        0 0.7 0.7
        0.1 0.7 0.6
        Any help would be greatly appreciated.

        L Offline
        L Offline
        Lost User
        wrote on last edited by
        #3

        do you mean as below?(see last column):

        VAN Equity 2011-12-03 00:00:00.000 0.7995 0.7995
        VAN Equity 2011-12-04 00:00:00.000 0.7995 0
        VAN Equity 2011-12-05 00:00:00.000 0.7 -0.0995
        VAN Equity 2011-12-08 00:00:00.000 0.7 0
        VAN Equity 2011-12-09 00:00:00.000 0.6 -0.1
        VIN Equity 2011-12-03 00:00:00.000 0.1 0.1
        VIN Equity 2011-12-04 00:00:00.000 0.2 0.1
        VIN Equity 2011-12-05 00:00:00.000 0.7 0.5
        VIN Equity 2011-12-08 00:00:00.000 0.7 0
        VIN Equity 2011-12-09 00:00:00.000 0.6 -0.1
        VAT Equity 2011-12-03 00:00:00.000 0.1 0.1
        VAT Equity 2011-12-04 00:00:00.000 0.2 0.1
        VAT Equity 2011-12-05 00:00:00.000 0.7 0.5
        VAT Equity 2011-12-08 00:00:00.000 0.7 0
        VAT Equity 2011-12-09 00:00:00.000 0.6 -0.1

        Maybe I have a nice way

        1 Reply Last reply
        0
        • A aakar

          Hi

          I need help in writing a SQL query that gives the difference in values for two consecutive dates.

          My table structure is as follows :

          Collapse | Copy Code
          Symbol Name Dates Outstanding values
          VAN Equity 12/3/2011 0.7995
          VAN Equity 12/4/2011 0.7995
          VAN Equity 12/5/2011 0.7000
          VAN Equity 12/8/2011 0.7000

          I want the output in the following form :

          Collapse | Copy Code
          Symbol Name Dates Difference
          VAN Equity 12/3/2011 0.7995
          VAN Equity 12/4/2011 0
          VAN Equity 12/5/2011 -0.0995
          VAN Equity 12/8/2011 0
          I came up with the below query.

          Collapse | Copy Code
          WITH LHP AS
          (
          SELECT *, ROW_NUMBER() OVER(ORDER BY Dates ) AS rn
          FROM test_table as LI
          )
          SELECT mc.[Outstanding Values] - mp.[Outstanding Values],
          mc.[Outstanding Values] , mp.[Outstanding Values]
          FROM LHP mc
          inner JOIN LHP mp
          ON mc.rn = mp.rn - 1
          The above query works fine if I have just one set of Symbol Names.
          However, if I have my data in the below format :

          Collapse | Copy Code
          Symbol Name Dates Outstanding Values
          VAN Equity 2011-12-03 00:00:00.000 0.7995
          VAN Equity 2011-12-04 00:00:00.000 0.7995
          VAN Equity 2011-12-05 00:00:00.000 0.7
          VAN Equity 2011-12-08 00:00:00.000 0.7
          VAN Equity 2011-12-09 00:00:00.000 0.6
          VIN Equity 2011-12-03 00:00:00.000 0.1
          VIN Equity 2011-12-04 00:00:00.000 0.2
          VIN Equity 2011-12-05 00:00:00.000 0.7
          VIN Equity 2011-12-08 00:00:00.000 0.7
          VIN Equity 2011-12-09 00:00:00.000 0.6
          VAT Equity 2011-12-03 00:00:00.000 0.1
          VAT Equity 2011-12-04 00:00:00.000 0.2
          VAT Equity 2011-12-05 00:00:00.000 0.7
          VAT Equity 2011-12-08 00:00:00.000 0.7
          VAT Equity 2011-12-09 00:00:00.000 0.6
          i.e. multiple sets of Symbol Names distributed across the same set of dates my query gives me the results as shown below : which is not as expected.

          Collapse | Copy Code
          No Outstanding Outstanding
          Name Values Values
          0.6995 0.7995 0.1
          -0.1 0.1 0.2
          -0.5995 0.2 0.7995
          0.0995 0.7995 0.7
          0 0.7 0.7
          0.1 0.7 0.6
          Any help would be greatly appreciated.

          L Offline
          L Offline
          Lost User
          wrote on last edited by
          #4

          esProc can solve this problem easily. It is just like Excel+SQL, a free tool, see: A Query Language Over-perform SQL [^]. code as below:

          A1: =sqlsvr.query("select Name,Dates,[Outstanding Values] from test_table order by Name,Dates")
          A2: =A1.derive(:Difference)
          A3: =A2.group(Name)
          A4: =A3.(~.run(Difference='Outstanding Values'-'Outstanding Values'[-1]))

          I can't post a image file,so here are some explains: A1 cell:query some data from database. A2 cell:add a column to A1, named "Difference", just no data. A3 cell:group the data by field "Name" in A2 cell. Here are 3 groups, A4 cell:within every group(i.e. "~"), modify the field "Difference". The algorithm is: "this row" subtract "last row"(i.e. 'Outstanding Values'[-1]) I think esProc is more simple for mass data computation BTW. how to post a image file?

          1 Reply Last reply
          0
          Reply
          • Reply as topic
          Log in to reply
          • Oldest to Newest
          • Newest to Oldest
          • Most Votes


          • Login

          • Don't have an account? Register

          • Login or register to search.
          • First post
            Last post
          0
          • Categories
          • Recent
          • Tags
          • Popular
          • World
          • Users
          • Groups