Solved

How to make this query?

Posted on 2013-01-30
3
155 Views
Last Modified: 2013-02-14
Hi!

Have a TABLEA that contains of this:
Item         SALES                             Prnr         Period
3023      60.000000000000            PU4812      201304
3023      60.000000000000            PU4812      201304
3023       60.000000000000      PU0413      201304
3023      60.000000000000            PU4412      201304
3023      40.000000000000            PU0413      201304
3023      40.000000000000            PU0413      201304
3023      40.000000000000            PU5212      201304
3023      40.000000000000            PU4412      201304
3023      7920.000000000000      PU5212      201304
3023        -2.000000000000         PU4812   201304

My problem is this:
I must insert missing records that not in Prset periode..
for Period= 201304

Must have this periods for Periode=201304
PU4412->PU4812->PU5212->PU0413
for every four months

Like SALES = 60, have all 4 periods right
SALES = 40, have all 4 periods right
SALES = 7920 misses -> PU4412->PU4812->PU0413
SALES = -2 Misses -> PU4412->PU5212->PU0413

So the final result wil be:

Item         SALES                             Prnr         Period
3023      60.000000000000            PU4812      201304
3023      60.000000000000            PU4812      201304
3023       60.000000000000      PU0413      201304
3023      60.000000000000            PU4412      201304
3023      40.000000000000            PU0413      201304
3023      40.000000000000            PU0413      201304
3023      40.000000000000            PU5212      201304
3023      40.000000000000            PU4412      201304
3023      7920.000000000000      PU5212      201304
3023        -2.000000000000         PU4812   201304
3023      7920.000000000000      PU4412      201304
3023      7920.000000000000      PU4812      201304
3023      7920.000000000000      PU0413      201304
3023        -2.000000000000         PU4412   201304
3023        -2.000000000000         PU5212   201304
3023        -2.000000000000         PU0413   201304


How can i do this ?
0
Comment
Question by:team2005
  • 2
3 Comments
 
LVL 75

Accepted Solution

by:
Anthony Perkins earned 500 total points
ID: 38835208
This will give you the missing rows:
SELECT  a.Item, a.Sales, p.Prnr, a.Period
FROM    TableA A
        INNER JOIN (
                    SELECT  Item,
                            Sales
                    FROM    TableA A
                    WHERE   Period = 201304
                    GROUP BY Item,
                            Sales
                    HAVING  COUNT(*) < 4
                   ) A2 ON A.Item = A2.Item
                           AND A.Sales = A2.Sales
        CROSS JOIN (
                    SELECT DISTINCT
                            Prnr
                    FROM    TableA
                    WHERE   Period = 201304
                   ) p
WHERE   A.Prnr <> p.Prnr

Open in new window

0
 
LVL 75

Expert Comment

by:Anthony Perkins
ID: 38835237
This is how I tested it:
DECLARE @TableA TABLE (
    Item integer,
    Sales money,
    Prnr varchar(10),
    Period integer)

INSERT  @TableA
        (Item, Sales, Prnr, Period)
VALUES  (3023, 60.000000000000, 'PU4812', 201304),
        (3023, 60.000000000000, 'PU4812', 201304),
        (3023, 60.000000000000, 'PU0413', 201304),
        (3023, 60.000000000000, 'PU4412', 201304),
        (3023, 40.000000000000, 'PU0413', 201304),
        (3023, 40.000000000000, 'PU0413', 201304),
        (3023, 40.000000000000, 'PU5212', 201304),
        (3023, 40.000000000000, 'PU4412', 201304),
        (3023, 7920.000000000000, 'PU5212', 201304),
        (3023, -2.000000000000, 'PU4812', 201304)

SELECT  a.Item, a.Sales, p.Prnr, a.Period
FROM    @TableA A
        INNER JOIN (
                    SELECT  Item,
                            Sales
                    FROM    @TableA A
                    WHERE   Period = 201304
                    GROUP BY Item,
                            Sales
                    HAVING  COUNT(*) < 4
                   ) A2 ON A.Item = A2.Item
                           AND A.Sales = A2.Sales
        CROSS JOIN (
                    SELECT DISTINCT
                            Prnr
                    FROM    @TableA
                    WHERE   Period = 201304
                   ) p
WHERE   A.Prnr <> p.Prnr

Open in new window


And here is the output:
Item	Sales	Prnr	Period
3023	7920.00	PU0413	201304
3023	7920.00	PU4412	201304
3023	7920.00	PU4812	201304
3023	-2.00	PU0413	201304
3023	-2.00	PU4412	201304
3023	-2.00	PU5212	201304

Open in new window

0
 
LVL 2

Author Closing Comment

by:team2005
ID: 38888423
Thanks
0

Featured Post

Free Webinar: AWS Backup & DR

Join our upcoming webinar with experts from AWS, CloudBerry Lab, and the Town of Edgartown IT to discuss best practices for simplifying online backup management and cutting costs.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

A theme is a collection of property settings that allow you to define the look of pages and controls, and then apply the look consistently across pages in an application. Themes can be made up of a set of elements: skins, style sheets, images, and o…
Why is this different from all of the other step by step guides?  Because I make a living as a DBA and not as a writer and I lived through this experience. Defining the name: When I talk to people they say different names on this subject stuff l…
Familiarize people with the process of retrieving data from SQL Server using an Access pass-thru query. Microsoft Access is a very powerful client/server development tool. One of the ways that you can retrieve data from a SQL Server is by using a pa…
This is Part 3 in a 3-part series on Experts Exchange to discuss error handling in VBA code written for Excel. Part 1 of this series discussed basic error handling code using VBA. http://www.experts-exchange.com/videos/1478/Excel-Error-Handlin…

679 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question