Results 1 to 3 of 3

Thread: [RESOLVED] SQL query

  1. #1

    Thread Starter
    Member
    Join Date
    Feb 2011
    Posts
    58

    Resolved [RESOLVED] SQL query

    HI EVERYONE.

    GOOD DAY TO YOU ALL! i WOULD LIKE TO GET SOME OPINION SINCE I AM KINDA STUCK IN THIS QUERY I AM WORKING ON.

    WE HAVE THIS EXISTING QUERY

    SELECT
    f.A_OBJ_ID,
    f.B_OBJ_ID,
    SUM(f.C) R_COUNT,
    SUM(f.D) A_SPEND

    FROM
    FACT f JOIN
    TIME t ON f.T_OBJ_ID = t.OBJ_ID
    WHERE
    t.TWELVE = 1
    GROUP BY
    f.F_OBJ_ID,
    f.P_OBJ_ID
    ORDER BY
    f.F_OBJ_ID,
    SUM(f.D) DESC;

    NOW I HAVE TO IMPLEMENT A NEW FIELD IN THIS REPORT CALLED B_SPEND AS YOU CAN SEE, A_SPEND SHOULD BE BASED ON T.TWELVE = 1 (ACCORDING TO THE QUERY, WHERE T.TWELVE = TRUE) BUT THE NEW FIELD CONDITION HAS TO BASED ON A DIFFERENT FIELD BUT SAME TABLE WHERE T.WELVE RESIDES.

    THE QUESTION IS, CAN I GET THE SUM OF A_SPEND BASED ON T.TWELVE = 1 AND SUM OF B_SPEND BASED T.THREE = 1 CONDITION?

    I WANT TO GET THE SUM OF SPEND BASED ON LAST TWELVE MONTHS (T.TWELVE= 1) AND LAST 3 MONTHS (T.THREE =1)

    IF I TRY TO DO THIS:

    SELECT
    f.A_OBJ_ID,
    f.B_OBJ_ID,
    SUM(f.C) R_COUNT,
    SUM(f.D) A_SPEND,
    SUM(F.D) B_SPEND

    FROM
    FACT f JOIN
    TIME t ON f.T_OBJ_ID = t.OBJ_ID
    WHERE
    t.TWELVE = 1 AND t.THREE = 1
    GROUP BY
    f.F_OBJ_ID,
    f.P_OBJ_ID
    ORDER BY
    f.F_OBJ_ID,
    SUM(f.D) DESC;

    IT GIVES ME THE SAME SPEND VALUE TO BOTH A_SPEND AND B_SPEND FIELDS which is the A_SPEND VALUE.

    SHOULD I JUST CREATE A NEW TABLE FOR THE THREE MONTH VALUES? THIS IS AGAINST THE REQUIREMENT THOUGH
    BUT IF SQL CANNOT DISPLAY 2 VALUES BASED ON 2 CONDITIONS UNDER THE SAME TABLE, THEN I GUESS I'LL JUST HAVE TO DO THAT.

    THANKS A LOT FOR YOUR HELP!

  2. #2
    Super Moderator si_the_geek's Avatar
    Join Date
    Jul 2002
    Location
    Bristol, UK
    Posts
    41,974

    Re: SQL query

    Thread moved to the 'Database Development' forum - which is where you should always post SQL questions (while SQL can be used in VB.Net, it is certainly not specific to VB.Net)


    By the way, your SHOUTING makes your post very hard to read.

  3. #3
    Addicted Member
    Join Date
    Oct 2008
    Location
    Califorina
    Posts
    235

    Re: SQL query

    If you're using MSSQL you could use a CTE instead it would look clearing imo. I didn't test this query but it should could use it to return both values (sum of 12month and sum of 3 months)

    Code:
    SELECT *
    FROM (
            SELECT f.A_OBJ_ID, f.B_OBJ_ID, 
                    SUM(f.C) R_COUNT,
                    SUM(f.D) A_SPEND,
                    SUM(F.D) B_SPEND
            FROM FACT f JOIN TIME t 
              ON f.T_OBJ_ID = t.OBJ_ID
            WHERE t.TWELVE = 1 
            GROUP BY f.F_OBJ_ID, f.P_OBJ_ID
          ) as twelveMonths 
    INNER JOIN 
         (      
           SELECT f.A_OBJ_ID, f.B_OBJ_ID, 
                  SUM(f.C) R_COUNT,
                  SUM(f.D) A_SPEND,
                  SUM(F.D) B_SPEND
           FROM FACT f JOIN TIME t 
             ON f.T_OBJ_ID = t.OBJ_ID
           WHERE t.THREE = 1
           GROUP BY f.F_OBJ_ID, f.P_OBJ_ID
          ) as threeMonths
      ON  twelveMonths.T_OBJ_ID = threeMonths.T_OBJ_ID

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  



Click Here to Expand Forum to Full Width