Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
Need Help with SQL Statement
Message
From
22/09/1997 13:28:56
 
 
To
19/09/1997 11:09:09
General information
Forum:
Visual FoxPro
Category:
Coding, syntax & commands
Miscellaneous
Thread ID:
00050724
Message ID:
00051059
Views:
31
>Can anyone tell me if the following can be done in a one line select statement. I cannot seem to get the results I require.
>
>I have one table with the following fields: Customer, Date, Price. I am simply trying to get the last price quoted to the customer.
>
>CustA, 01/01/01, 100
>CustA, 01/01/97, 111
>CustB, 02/02/96, 200
>CustB, 02/02/02., 222
>
>I want my result to be:
>
>CustA, 01/01/97, 111
>CustB, 02/02/96, 200
>
>If I use SELECT * FROM myTable ORDER BY Date DESC GROUP BY Customer
>I get ...
>CustA, 01/01/01, 100
>CustB, 02/02/01, 222
>
>Again, I am looking for the last price quoted only.
>
>Any help would be greatly appreciated.
>
>-Isaac Roda
> Hi, Isaac:
First the solution to your problem:

SELECT Cust, MAX(Date), Price FROM myTable ;
GROUP BY Cust

Second the reason for the results of your initial attempt:
You told VFP to get all rows of your table:
1) SQL chooses the order that output rows will be generated in for optimization purposes, i.e. order of initial output will vary
Then to take each group of rows for the same customer and choose one record from each group(basically randomly)
2) VFP had no criteria as to which row it should choose
Finally to order the result by date.

SQL in general works as follows:
(Perform Joins)
Apply all filter conditions (WHERE)
Apply all post filter conditions (HAVING)
Order result for presentation

Your order by date occurred too late to have any effect on the output set.
P.S. I didn't see any effect from SET CENTURY but you might want to check.
Ned

Reality is.
Previous
Next
Reply
Map
View

Click here to load this message in the networking platform