Join tables with aggregate function

Hello
I have 4 views that I need to perform aggregate function, count, on and then join them for query output.
Basically each view has a column with a score and a subcontractor name. One subcontractor may have more than one score in each view.
Here is the sql that I'm working with thus far:
select e.sub_name, (count(e.score) - 1), (count(v.score) - 1), (count(s.score) - 1), (count(u.score) - 1)
from speed.v_ratings_ex e, speed.v_ratings_vg v, speed.v_ratings_sat s, speed.v_ratings_uns u
where v.sub_name = e.sub_name
and s.sub_name = e.sub_name
and u.sub_name = e.sub_name
group by e.sub_name
order by e.sub_name asc;
This results in each column returning the same value b/c the join is performed before the aggregate function.
Can anyone offer some help so that I may get the desired results?

You need to use in-line views to perform the aggregates, then join the in-line views.
Something like:
SELECT e.sub_name, e.score - 1 escore, v.score - 1 vscore,
       s.score - 1 sscore, u.score - 1 uscore
FROM (SELECT sub_name,count(*) score
      FROM v_ratings_ex
      GROUP BY sub_name) e,
     (SELECT sub_name,count(*) score
      FROM v_ratings_vg
      GROUP BY sub_name) v,
     (SELECT sub_name,count(*) score
      FROM v_ratings_sat
      GROUP BY sub_name) s,
     (SELECT sub_name,count(*) score
      FROM v_ratings_uns
      GROUP BY sub_name) u
WHERE v.sub_name = e.sub_name and
      s.sub_name = e.sub_name and
      u.sub_name = e.sub_name
ORDER BY e.sub_name asc;TTFn
John

Similar Messages

  • Send a table with a function.

    Hi all!!
    I want to send a table with a function, but I don't know how to do it.
    in my code I have this.
    FUNCTION ZBORRAR.
    ""Interfase local
    *"    TABLES
    TABLES: T751F.
    *"    VARIABLES
    DATA: BEGIN OF S_CLA_MED_CAND.
              DATA: MASSN  LIKE T751F-MASSN,
                    MNTXT  LIKE T751F-MNTXT.
    DATA: END OF S_CLA_MED_CAND.
    DATA: T_CLA_MED_CAND LIKE S_CLA_MED_CAND OCCURS 0 WITH HEADER LINE.
    *"    FILL THE I. TABLE
    SELECT MASSN MNTXT
    FROM T751F
    INTO TABLE T_CLA_MED_CAND
    WHERE SPRSL = 'S'.
    ENDFUNCTION.
    I don't have any thing in the import, export, modif., tables tabs.
    Thanks and Regards.

    I MADE THIS...
    I FOLLOWED THIS
    Define a tan\ble in the TABLES tab.
    Table name: T_CLA_MED_CAND
    Type: LIKE
    Associated Type: T751F
    Table T_CLA_MED_CAND will be sent thru this FM.
    AND MY CODE IS:
    FUNCTION ZBORRAR.
    ""Interfase local
    *"  TABLES
    *"      X_CLA_MED_CAND STRUCTURE  T751F
    *"    TABLES
    *"    VARIABLES
    TYPES: BEGIN OF S_CLA_MED_CAND,
              MASSN  LIKE T751F-MASSN,
              MNTXT  LIKE T751F-MNTXT,
    END OF S_CLA_MED_CAND.
    DATA: T_CLA_MED_CAND TYPE TABLE OF S_CLA_MED_CAND WITH HEADER LINE.
    *"    GET DATA
    SELECT MASSN MNTXT
    FROM T751F
    INTO TABLE T_CLA_MED_CAND
    WHERE SPRSL = 'S'.
    LOOP AT T_CLA_MED_CAND.
      MOVE: T_CLA_MED_CAND-MASSN TO X_CLA_MED_CAND-MASSN,
            T_CLA_MED_CAND-MNTXT TO X_CLA_MED_CAND-MNTXT.
      APPEND X_CLA_MED_CAND.
    ENDLOOP.
    ENDFUNCTION.
    IN THE RESULTS THE TABLE HAS THE DATA I WANT BUT THERE IS TWO MORE FIELDS MANDT AND SPRSL. IS THIS BECAUSE THE SPRSL I'M USING IT TO FILTER THE DATA AND THE MANDT 'CAUSE I'M WORKING IN IT?
    HOW CAN I JUST HAVE TWO FIELDS??

  • Join table with additional data

    Hi,
    I'm new to JPA (Toplink Essentials) and I'd like to know how to handle this situation:
    I have ORDER table, ITEMS table and "join table" ORDER_ITEMS which holds refernces to ordered items with quantity of each oredered item.
    Many thanks

    I did mapping as shown in listing. It works for reading, but for writing JPA returns error. Can somebody help?
    Thanks
    [Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]Column name 'idexpedice' appears more than once in the result column list.
    Error Code: 264
    Call: INSERT INTO vklad_expedice (IDEXPEDICE, IDVKLAD, VAHA, idexpedice, idvklad) VALUES (?, ?, ?, ?, ?)
    bind => [null, null, 0, 4411, 2]
    @Entity
    public class Expedice implements Serializable {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer idexpedice;
    @Temporal(TemporalType.DATE)
    private Date datum;
    @OneToMany(fetch = FetchType.EAGER, mappedBy="expedice", cascade = CascadeType.ALL)
    private List<ExpediceVklad> vklady;
    @Entity
    public class Vklad implements Serializable {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer idvklad;
    private String nazev;
    @Entity
    @Table(name = "vklad_expedice")
    @IdClass(ExpediceVkladId.class)
    public class ExpediceVklad implements Serializable {
    @Id
    private Integer idexpedice;
    @Id
    private Integer idvklad;
    private Integer vaha;
    @ManyToOne
    @JoinColumn(name = "idexpedice")
    private Expedice expedice;
    @ManyToOne
    @JoinColumn(name = "idvklad")
    private Vklad vklad;
    public class ExpediceVkladId {
    @Id
    private Integer idexpedice;
    @Id
    private Integer idvklad;
    SQL tables
    EXPEDICE
    idexpedice
    datum
    VKLAD
    idvklad
    nazev
    VKLAD_EXPEDICE (this is the join table with additional column)
    idexpedice
    idvklad
    vaha
    Edited by: user10933983 on 31.3.2009 13:47

  • Update of a table from a select query with aggregate functions.

    Hello All,
    I have problem here:
    I have 2 tables A(a1, a2, a3, a4, a4....... ) and B( a1, a2, b1, b2, b3). I need to calculate the avg(a4-a3), Max(a4-a3) and Min(a4-a3) and insert it into table B. If the foreign keys a1, a2 already exist in table B, I need to do an update of the computed values into column b1, b2 and b3 respectively, for a1, a2.
    Q1. Is it possible to do this with a single query ? I would prefer not to join A with B because the table A is very large. Also columns b1, b2 and b3 are non-nullable.
    Q2. Also if a4 and a3 are timestamps what is the best way to find the average? A difference of timestamps yields INTERVAL DAY TO SECOND over which the avg function doesn't seem to work. The averages, max and min in my case would be less than a day and hence all I need is to get the data in the hh:mm:ss format.
    As of now I'm using :
    TO_CHAR(TO_DATE(ABS(MOD(TRUNC(AVG(extract(hour FROM (last_modified_date - created_date))*3600 +
    extract( minute FROM (last_modified_date - created_date))*60 +
    extract( second FROM (last_modified_date - created_date)))
    ),86400)),'sssss'),'hh24":"mi":"ss') AS avg_time,
    But this is very long drawn. Something more compact and efficient would be nice.
    Thanks in advance for your inputs.
    Edited by: 847764 on Mar 27, 2011 5:35 PM

    847764 wrote:
    Hi,
    Thanks everyone for such fast replies. Malakshinov's example worked fine for me as far as updating the table goes. As for the timestamp computations, I'm posting additional info: Sorry, I don't understand.
    If Malakshinov's example worked for updating the table, but you still have problems, does that mean you have to do something else besides update the table? If so, what?
    Oracle version : Oracle Database 11g Enterprise Edition Release 11.2.0.1.0
    Here are the table details :
    DESC Table A
    Name Null Type
    ID               NOT NULL NUMBER
    A1               NOT NULL VARCHAR2(4)
    A2               NOT NULL VARCHAR2(40)
    A3               NOT NULL VARCHAR2(40)
    CREATED_DATE NOT NULL TIMESTAMP(6)
    LAST_MODIFIED_DATE TIMESTAMP(6) DESCribing the tables can help clarify some things, but it's no substitute for posting CREATE TABLE and INSERT statements. With only a description of the table, nobody can re-create the problem or test their ideas. Please post CREATE TABLE and INSERT statements for both tables as they exist before the MERGE. If table b doen't contain any rows before the MERGE, then just say so, but you still need to post a CREATE TABLE statement for both tables, and INSERT statements for table a.
    The objective is to compute the response times : avg (LAST_MODIFIED_DATE - CREATED_DATE), max (LAST_MODIFIED_DATE - CREATED_DATE) and min (LAST_MODIFIED_DATE - CREATED_DATE) grouped by A1 and A2 and store it in table B under AVG_T, MAX_T and MIN_T. Since AVG_T, MAX_T and MIN_T are only used for reporting purposes we have kept it as Varchar (though I think keeping it as timestamp would make more sense). I think a NUMBER would make more sense (the number of minutes, for example), or perhaps an INTERVAL DAY TO SECOND. If you stored a NUMBER, it would be easy to compute averages.
    In table B the times are stored in the format : hh:mm:ss. We don't need milliseconds precision. If you don;'t need milliseconds, then you should use DATE instead of TIMESTAMP. The functions for manipulating DATEs are much better.
    Hence I was calculating is as follows:
    -- Avg Time
    TO_CHAR(TO_DATE(ABS(MOD(TRUNC(AVG(extract(hour FROM (last_modified_date - created_date))*3600 +
    extract( minute FROM (last_modified_date - created_date))*60 +
    extract( second FROM (last_modified_date - created_date)))
    ),86400)),'sssss'),'hh24":"mi":"ss') AS avg_time,
    --Max Time
    extract (hour FROM MAX(last_modified_date - created_date))||':'||extract (minute FROM MAX(last_modified_date - created_date))||':'||TRUNC(extract (second FROM MAX(last_modified_date - created_date))) AS max_time,
    --Min Time
    extract (hour FROM MIN(last_modified_date - created_date))||':'||extract (minute FROM MIN(last_modified_date - created_date))||':'||TRUNC(extract (second FROM MIN(last_modified_date - created_date))) AS min_timeIs this something that has to be done before or after the MERGE?
    Post the complete statement.
    Is this part of a query? Where's the SELECT keyword?
    Is this part of a DML operation? Where's the INSERT, or UPDATE, or MERGE keyword?
    What are the exact results you want from this? Explain how you get those results.
    Is the code above getting the right results? Are you just asking if there's a better way to get the same results?
    You have to explain things very carefully. None of the people who want to help you are familiar with your application, or your needs.
    I just noticed that my reply is horribly formatted - apologies! I'm just getting the hang of it.Whenever you post formatted text (such as query results) on this site, type these 6 characters:
    \(small letters only, inside curly brackets) before and after each section of formatted text, to preserve spacing.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   

  • Problem with aggregate function

    Hello,
    the prerequisite is to have a table with the following columns (#id, a_date).
    Now the task is to select the maximum date from a range of rows of this table
    select max(t.a_date)
    from the_table t
    where <condition to get only some rows of the_table>
    and to get the id of the record which holds the maximum date. That's where the problem is located. It should look like the following code (yes, I know this cannot work because grouping by the id makes the aggregate senseless) just to make clear what I want to do.
    select max(t.a_date), t.id
    from the_table t
    where <condition to get only some rows of the_table>
    group by t.id
    Does anybody have any idea how to solve the problem?
    With regards,
    Cosima
    Message was edited by:
    Cosima Laube

    Hi all,
    as the condition in the where-clause is very complex, I decided to use the solution with the FIRST function. After googling and reading a bit, I have just two more questions for my deeper understanding:
    1) am I right that both snippets below do exactly the same?
    SELECT MAX (t.a_date)
         , MAX (t.ID)KEEP (DENSE_RANK FIRST ORDER BY t.a_date DESC)
      FROM the_table t
    WHERE <condition to get only some rows of the_table>
    SELECT MAX (t.a_date)
         , MAX (t.ID)KEEP (DENSE_RANK LAST ORDER BY t.a_date ASC)
      FROM the_table t
    WHERE <condition to get only some rows of the_table>2) can I use als the min function for t.ID as there the aggregate function does not have any effect (but is necessary in order to use KEEP and FIRST or KEEP and LAST)?
    With regards,
    Cosima
    Message was edited by:
    Cosima Laube

  • Sorting table with custom function

    Hi,
    I am using JDev 11.1.1.4.0
    I have a table with records.
    public Record(int id, String desc) {
    this.id = id;
    this.description = desc;
    I want to implement a sorting function, for the description column, based on the length of the String.
    Any ideas how to do it?

    Hi Pedro,
    In that case the class Record should be "comparable" as you said.
    You can replace the current collection by an ordered list/set, and then implement the interface Comparator.
    This is an example:
    public java.util.TreeSet<Record> getRecords() {
      TreeSet<Record> records = new TreeSet<Record>(new RecordComparator());
      // routine to get the records
      return records;
    class RecordComparator implements Comparator<Record> {
      @Override
      public int compare(Record o1, Record o2) {
        // be careful with null records/attributes!
        return o1.getDescription().length() > o2.getDescription().length() ? 1 : o1.getDescription().length() < o2.getDescription().length() ? -1 : 0;
    }After that, try this:
    http://technology.amis.nl/2012/03/01/adf-11g-programmatically-configuring-sort-for-rich-table/
    AP
    Correction:
    Just add a transient attribute to class Record and try this with that new attribute: http://technology.amis.nl/2012/03/01/adf-11g-programmatically-configuring-sort-for-rich-table/
    AP
    Edited by: Alejandro Profet on Nov 12, 2012 3:32 PM

  • Can we join table with structure

    Hi
    i have taken fields from Plaf table and some fields from structures so now i want to join that how can i join.
    Is there any option?
    regards

    Hi,
    structure dont have any data base table associated with them so they dont have any data.
    that's why we cannot join structure witha table but we can include a structure within any table.
    Sytex to include structure in ztable:
    fieldname     data element.
    .include        struname
    hope it will ans ur query.
    Thanks
    Rajesh Kumar

  • Pivot table wihtout Aggregate Functions ( Urgent Please. )

    I am trying to select date and time. But having a hard time since I dont have any aggregate function that is needed. Just pivot the rows to columns.
    IN sql 
    stage
    starttime
    endtime
    1
    1/22/2011 15:31
    1/22/2011 15:32
    2
    1/22/2011 15:33
    1/22/2011 15:34
    3
    1/22/2011 15:35
    1/22/2011 15:36
    Required 
    starttime_s1
    endtime_s1
    starttime__s2
    endtime_s2
    starttime_s3
    endtime_s3
    1/22/2011 15:31
    1/22/2011 15:32
    1/22/2011 15:33
    1/22/2011 15:34
    1/22/2011 15:35
    1/22/2011 15:36

    What is it that you're trying to accomplish with this?
    The reason I ask is that pivoting data is a display function and therefore best left to the application or reporting tier.
    If you're going to insist on "driving screws with a hammer" and really want to do this in SQL, the next question is, Is there a set number of "Stages" that will exist? Is it always going to be 3 stages and only 3 stages?
    If the answer is YES, there will be a fixed number of stages, then it's a simple thing to do with either a PIVOT or CASE statements. (my personal preference is to use case statements, especially if you're pivoting 2 or more columns)
    If the answer is NO, the number is stages can vary... You're left with a Dynamic PIVOT. Dynamic Pivots are a bit more complex to write but there is enough sample code out on the interwebs that you won't have a problem finding the correct syntax. 
    The real problem with a Dynamic Pivot query is the fact that it's pretty much useless. You can't do much (if anything at all) with it... Due to the fact that they have variable numbers of columns, they can't be used in views or procs and I can't think of
    a singe, off the shelf, reporting platform that will allow accommodate data source that has a different number of columns every time it executes... So unless you're going to be content looking at the results in SSMS or developing a custom application, I don't
    see the point.
    Also... Aggregates aren't a problem based on the data you're showing. You only have 1 start time and 1 end time per stage. Using either the MIN or MAX aggregate functions will work to give you the desired result.
    Anyway, hope that helps,
    Jason
    Jason Long

  • Join table with an object type

    Hi,
    I would like ot know how to join a table with another table having an object type as a column value.
    For ex:
    Create type add_obj as object (st varchar2(10), city varchar2(10), zip varchar2(10));
    Table A
    Cust_id number
    cust_address add_obj
    Table B
    Cust_id number
    order_id number
    I want to select the complete address for each order.
    Is this the correct way to do this select:
    Select o.order_id, c.customer_id, c.cust_address.st, c.cust_address.city, c.cust_address.zip
    from table A c, table B o;
    Any leads is appreciated. Thanks in advance.

    >
    unfortunately with a crashed Oracle db I could try nothing.... Forums are for getting help and offering help in times of need.
    Will take your advice some other time. Now need help on how to select the address city, st and zip along with the order_id.
    >
    Ah - I understand - you mean before your class is over.
    Unfortunately with a crashed Oracle db you will not know if our advice is correct or not since you won't be able to test it.
    So I will offer advice some other time. Now need to get some fresh air and a hot cup of coffee.
    Let us know when you DB is back up and you have run your tests. Then if you still have any questions other forum members may decide to help you. Well - if their database is up and running that is.

  • Many to many join table with different column names

    Hi have a joint table with different column names as foreign keys in the joining
    tables...
    e.g. i have a many to many reltnshp btwn Table A and Table B ..and join table
    C
    both have a column called pk.
    and the join table C has columns call fk1 and fk2
    does cmd require the same column name in the join table as in the joining table?
    are there any workarounds?
    thanks

    HI,
    No, the foreign key column names in the join table do not have to match the primary
    key names in the joined tables.
    -thorick

  • Joining tables with SQL in Crystal XI

    I am new to Crsytal Reports. I want to join 2 tables using a formula, which I am trying to do in SQL. I created a simple test report and I can get it to work if I don't put any fields on the report from the joined table.  ie  -  if I just use fields from "sal-rep" the report works.  As soon as I add a field from "freight" (my joined table) the report will not display anything.  (but I don't get any error messages - just a blank report).  Here is my SQL: 
    SELECT "sal-rep"."full-name","sal-rep"."invoice-nbr","freight"."misc-charge-ammount"  FROM   "PUB"."sal-rep" INNER JOIN "PUB"."FREIGHT" ON ("sal-rep"."invoice-nbr"="freight"."invoice-nbr")  WHERE  "sal-rep"."invoice-nbr"='0000189957'

    I got it to work!!!   This is the SQL I used -
    SELECT "sal_rep"."full-name", "sal_rep"."invoice-nbr", "freight"."misc-charge-ammount", "freight"."invoice-date"
    FROM   "PUB"."freight" "freight" INNER JOIN "PUB"."sal-rep" "sal_rep" ON ("freight"."invoice-nbr"="sal_rep"."invoice-nbr") AND ("freight"."invoice-date"="sal_rep"."inv-date")
    WHERE  "sal_rep"."invoice-nbr"='0000189957'
    Now when I look at the Table used in Database expert it lists -  Command and Freight.
    Before it was listing Command and Sal-Rep. 
    Not sure I understand why, but at least it's working.
    thanks for your help - really appreciated!

  • Answers Reports with Aggregate Function

    Hi,
    I have a Product Table with columns, CustomerName, ProductID,ProductName,Purchase Date. I am trying to create a report in the flg. format:
    CustomerName Customer-Prod Count ProductName Total Prod Count %of Products
    Mike 10 CD 2 20%
    DVD 1 10%
    Computer 6 60%
    Laptop 1 10%
    Dan 5 Computer 3 60%
    DVD 2 40%
    Any suggestions on how to accomplish this?
    Thanks,
    rkingmdu

    Thanks, the syntax worked. But I get incorrect results.
    Here's what I queried:
    "PRODUCTS".CUSTOMERNAME,
    COUNT("PRODUCTS"."PRODUCTID" By "PRODUCTS"."CUSTOMERNAME"),
    "PRODUCTS".PRODUCTNAME,
    COUNT("PRODUCTS"."PRODUCTID" By "PRODUCTS"."PRODUCTID", "PRODUCTS"."CUSTOMERNAME")
    The first count returns the correct results but the second count is wrong. The query looks to be ok, I don't know where I am getting it wrong.
    Any ideas?
    Thanks
    rkingmdu

  • Updating parent row in a self-join table with triggers

    Hi Gurus!
    Need of a business to update parent row(s) in the same table with triggers (insert, update and delete). Table is having recursive relation and error is coming as mutating error. I was able to do this with MS-SQL server.
    Appreciate any help or work around possibilities.
    Regards,
    SH

    SH,
    popular solutions to this issue include
    - autonomous transactions
    - recording (typically in PL/SQL package variables) the rows being processed from the row level triggers and using this information in the after statement level trigger to perform the update on the parent rows
    - use a View with an instead of trigger to re-route the DML on your table
    Which one to use depends on what exactly you are trying to achieve and how the data hangs together.
    Lucas

  • How can i join table with multiple colums

    This is my Data-----------------------------------------------------DECLARE @StockIn TABLE
    InID INT ,
    StockID INT ,
    InQty DECIMAL(16, 2) ,
    Price DECIMAL(16, 2) ,
    tranDate DATE ,
    running INT
    DECLARE @StockOut TABLE
    OutID INT ,
    StockID INT ,
    OutQty DECIMAL(16, 2) ,
    lineid INT ,
    tranDate DATE
    INSERT INTO @StockIn ( InID, StockID, InQty, Price, tranDate, running )
    VALUES ( 1, 1, 15, 430, '2014-10-09', 1 ),
    ( 2, 1, 10, 431, '2014-10-10', 2 ),
    ( 3, 1, 15, 432, '2015-02-02', 3 ),
    ( 4, 2, 15, 450, '2014-08-05', 1 ),
    ( 5, 2, 6, 450, '2014-10-01', 2 ),
    ( 6, 2, 15, 452, '2015-10-02', 3 )
    INSERT INTO @StockOut ( OutID, StockID, OutQty, lineid, tranDate )
    VALUES ( 1, 1, 20, 2, '2014-10-11' ),
    ( 2, 1, 10, 4, '2014-10-12' ),
    ( 3, 2, 12, 8, '2014-11-01' ),
    ( 4, 2, 3, 8, '2014-11-02' );--------------------------------------------------------------------This is my query for calculate the total remaining of stock of any stockID--------------------------------------------------------------------                    WITH  RunningTotals as (
    select StockID , Qty , price , total , total - qty AS PrevTotal, TranDate , rn FROM (
    select 
     StockID, InQty  AS QTY , Price 
    , SUM(InQty) over (PARTITION BY StockID order by tranDate ,  inQty DESC ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) as Total
    ,ROW_NUMBER() OVER (PARTITION BY StockID ORDER BY  tranDate ,  inQty DESC ) as rn
    ,TranDate --,TranID, TxnType
    from @StockIn  )  A   -- runing stockID in stock order by tranDate
    ) , TotalOut as ( 
    SELECT    StockID ,  Sum(OutQty) AS QTY
    FROM            @StockOut 
       GROUP BY StockID  -- Sum of outQty group by StockID
    ) ,  GrandTotal as 
    select
    rt.StockID , rt.QTY AS original ,SUM(CASE WHEN PrevTotal > isNULL(out.Qty, 0) THEN rt.Qty ELSE rt.Total - isNULL(out.Qty, 0) END) AS QTY , Price , SUM(CASE WHEN PrevTotal > isNULL(out.Qty, 0) THEN rt.Qty ELSE rt.Total - isNULL(out.Qty, 0) END * Price) AS Ending , rt.TranDate  from 
    RunningTotals rt
    left join
    TotalOut out
    on
    rt.StockID = out.StockID 
    where rt.Total > isNull(out.Qty , 0)
    group by rt.StockID , Price , rt.TranDate  , rt.QTY  -- running OutQty out of inQty of any stockID
    ) Select * from GrandTotal order by stockID ------------------------------------------------------------
    This query is run the total remaining of stock exactly right. But if i try to get the OutQty of stockID of any Line (lineid)The query duplicate data. this is Example------------------------------------------------------------                    DECLARE @StockIn TABLE
          InID INT ,
          StockID INT ,
          InQty DECIMAL(16, 2) ,
          Price DECIMAL(16, 2) ,
          tranDate DATE ,
          running INT
    DECLARE @StockOut TABLE
          OutID INT ,
          StockID INT ,
          OutQty DECIMAL(16, 2) ,
          lineid INT ,
          tranDate DATE
    INSERT  INTO @StockIn ( InID, StockID, InQty, Price, tranDate, running )
    VALUES  ( 1, 1, 15, 430, '2014-10-09', 1 ),
            ( 2, 1, 10, 431, '2014-10-10', 2 ),
            ( 3, 1, 15, 432, '2015-02-02', 3 ),
            ( 4, 2, 15, 450, '2014-08-05', 1 ),
            ( 5, 2, 6, 450, '2014-10-01', 2 ),
            ( 6, 2, 15, 452, '2015-10-02', 3 )
    INSERT  INTO @StockOut ( OutID, StockID, OutQty, lineid, tranDate )
    VALUES  ( 1, 1, 20, 2, '2014-10-11' ),
            ( 2, 1, 10, 4, '2014-10-12' ),
            ( 3, 2, 12, 8, '2014-11-01' ),
            ( 4, 2, 3, 8, '2014-11-02' );
    WITH  RunningTotals as (
    select StockID , Qty , price , total , total - qty AS PrevTotal, TranDate , rn FROM (
    select 
     StockID, InQty  AS QTY , Price 
    , SUM(InQty) over (PARTITION BY StockID order by tranDate ,  inQty DESC ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) as Total
    ,ROW_NUMBER() OVER (PARTITION BY StockID ORDER BY  tranDate ,  inQty DESC ) as rn
    ,TranDate --,TranID, TxnType
    from @StockIn  )  A  
    ) , TotalOut as ( 
    SELECT    StockID ,  Sum(OutQty) AS QTY , lineid -- Group by stockID of any lineidFROM            @StockOut 
       GROUP BY StockID   , lineid
    ) ,  GrandTotal as 
    select
    rt.StockID , rt.QTY AS original ,SUM(CASE WHEN PrevTotal > isNULL(out.Qty, 0) THEN rt.Qty ELSE rt.Total - isNULL(out.Qty, 0) END) AS QTY , Price , SUM(CASE WHEN PrevTotal > isNULL(out.Qty, 0) THEN rt.Qty ELSE rt.Total - isNULL(out.Qty, 0) END * Price) AS Ending , rt.TranDate , lineid from 
    RunningTotals rt
    left join
    TotalOut out
    on
    rt.StockID = out.StockID 
    where rt.Total > isNull(out.Qty , 0)
    group by rt.StockID , Price , rt.TranDate  , rt.QTY   , lineid
    ) Select * from GrandTotal order by stockID ----------------------------------------------How can i running the total out (OutQty*price) of any lineid

    Check this query, the date is excluded because it cannot return the result you want with and it will not be of any value to read the date like that in such a query:
    DECLARE @StockIn TABLE
    InID INT ,
    StockID INT ,
    InQty DECIMAL(16, 2) ,
    Price DECIMAL(16, 2) ,
    tranDate DATE ,
    running INT
    DECLARE @StockOut TABLE
    OutID INT ,
    StockID INT ,
    OutQty DECIMAL(16, 2) ,
    lineid INT ,
    tranDate DATE
    INSERT INTO @StockIn ( InID, StockID, InQty, Price, tranDate, running )
    VALUES ( 1, 1, 15, 430, '2014-10-09', 1 ),
    ( 2, 1, 10, 431, '2014-10-10', 2 ),
    ( 3, 1, 15, 432, '2015-02-02', 3 ),
    ( 4, 2, 15, 450, '2014-08-05', 1 ),
    ( 5, 2, 6, 450, '2014-10-01', 2 ),
    ( 6, 2, 15, 452, '2015-10-02', 3 )
    INSERT INTO @StockOut ( OutID, StockID, OutQty, lineid, tranDate )
    VALUES ( 1, 1, 20, 2, '2014-10-11' ),
    ( 2, 1, 10, 4, '2014-10-12' ),
    ( 3, 2, 12, 8, '2014-11-01' ),
    ( 4, 2, 3, 8, '2014-11-02' );
    WITH RunningTotals as (
    select StockID , Qty , price , total , total - qty AS PrevTotal, TranDate , rn FROM (
    select
    StockID, InQty AS QTY , Price
    , SUM(InQty) over (PARTITION BY StockID order by tranDate , inQty DESC ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) as Total
    ,ROW_NUMBER() OVER (PARTITION BY StockID ORDER BY tranDate , inQty DESC ) as rn
    ,TranDate --,TranID, TxnType
    from @StockIn ) A
    ) , TotalOut as (
    SELECT StockID , Sum(OutQty) AS QTY , lineid -- Group by stockID of any lineid
    FROM @StockOut
    GROUP BY StockID , lineid
    ) , GrandTotal as
    select
    rt.StockID , rt.QTY AS original ,SUM(CASE WHEN PrevTotal > isNULL(out.Qty, 0) THEN rt.Qty ELSE rt.Total - isNULL(out.Qty, 0) END) AS QTY , Price , SUM(CASE WHEN PrevTotal > isNULL(out.Qty, 0) THEN rt.Qty ELSE rt.Total - isNULL(out.Qty, 0) END * Price) AS Ending , rt.TranDate , lineid from
    RunningTotals rt
    left join
    TotalOut out
    on
    rt.StockID = out.StockID
    where rt.Total > isNull(out.Qty , 0)
    group by rt.StockID , Price , rt.TranDate , rt.QTY , lineid
    ) Select Distinct StockID,(select sum(original) from GrandTotal G where G.lineid = GrandTotal.lineid) as original,(select sum(QTY) from GrandTotal G where G.lineid = GrandTotal.lineid) as QTY,
    (select sum(Price) from GrandTotal G where G.lineid = GrandTotal.lineid) as Price, (select sum(Ending) from GrandTotal G where G.lineid = GrandTotal.lineid) as Ending,lineid from GrandTotal
    order by stockID
    the result will be:
    StockID original QTY Price Ending lineid
    1 25.00 20.00 863.00 8635.0000 2
    1 40.00 30.00 1293.00 12940.0000 4
    2 21.00 21.00 902.00 9480.0000 8
    Fouad Roumieh

  • How to use analytic function with aggregate function

    hello
    can we use analytic function and aggrgate function in same qurey? i tried to find any example on Net but not get any example how both of these function works together. Any link or example plz share with me
    Edited by: Oracle Studnet on Nov 15, 2009 10:29 PM

    select
    t1.region_name,
    t2.division_name,
    t3.month,
    t3.amount mthly_sales,
    max(t3.amount) over (partition by t1.region_name, t2.division_name)
    max_mthly_sales
    from
    region t1,
    division t2,
    sales t3
    where
    t1.region_id=t3.region_id
    and
    t2.division_id=t3.division_id
    and
    t3.year=2004
    Source:http://www.orafusion.com/art_anlytc.htm
    Here max (aggregate) and over partition by (analytic) function is in same query. So it means we can use aggregate and analytic function in same query and more than one analytic function in same query also.
    Hth
    Girish Sharma

Maybe you are looking for

  • How to create a URL in CRM 2007?

    Hi, Please guide me on how do I create a URL in SAP CRM 2007? Which transaction codes? Regards, Rohit

  • Securely erase old iMac G4

    I have eventually replaced my old G4 with a current model, and it is now redundant. What is the best way to make sure no personal details or data remains on the system before I dispose of it ? Also, can anyone suggest options for disposal ?

  • DME and FI posting not in balance.

    Hello Experts, Can any one please provide information on DME and FI posting not in balance. We are working on Concurrent employment, my client have problem with in balance amounts. Like GL account we run 10 batches together and compare with DME and w

  • How to add a new disk under solaris.

    Hi there, One of our sun blade 100 is unbootable due to the bad harddisk and what are the EXACT procedures to replace the new disk? I had some impression we need go through /reconfigure etc but I really not clear the exact procedure. Is this very com

  • Table field sizes

    Hi, Our application has been developed for single user mode only. Now it is being changed to work in multi user mode with oracle9.2.0.1.0. Some of the fileds in the GUI are text fields and text areas where the client can enter any amount of data. How