Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
Last 5 records in SQL Select
Message
From
30/10/2007 07:29:31
Lutz Scheffler
Lutz Scheffler Software Ingenieurbüro
Dresden, Germany
 
 
To
30/10/2007 07:20:20
General information
Forum:
Visual FoxPro
Category:
Databases,Tables, Views, Indexing and SQL syntax
Environment versions
Visual FoxPro:
VFP 9 SP1
OS:
Windows XP SP2
Network:
Windows NT
Database:
Visual FoxPro
Miscellaneous
Thread ID:
01264947
Message ID:
01264962
Views:
11
Hi Fabio,

nice to have your assistance again.

Do I read "but ..." that VFP will not work this way?

Agnes
>>Hi All,
>>
>>I have a table that holds a time tabes status per customer.
>>
>>I would like to create an SELCT SQL that gives me the 5 most recent records per customer
>>
>>like
>>
>>customer, date,value
>>A,2007-01-01,1
>>A,2007-01-02,2
>>A,2007-01-03,3
>>A,2007-01-04,4
>>A,2007-01-05,5
>>A,2007-01-06,6
>>A,2007-01-07,7
>>A,2007-01-08,8
>>B,2007-01-02,2
>>B,2007-01-03,3
>>B,2007-01-04,4
>>B,2007-01-05,5
>>B,2007-01-16,6
>>B,2007-01-17,7
>>B,2007-01-18,8
>>C,2007-01-17,7
>>C,2007-01-18,8
>>
>>Result set:
>>A,2007-01-04,4
>>A,2007-01-05,5
>>A,2007-01-06,6
>>A,2007-01-07,7
>>A,2007-01-08,8
>>B,2007-01-03,3
>>B,2007-01-04,4
>>B,2007-01-05,5
>>B,2007-01-16,6
>>B,2007-01-17,7
>>C,2007-01-17,7
>>C,2007-01-18,8
>>
>>
>>Any idea how to achive this?
>>
>>Agnes
>
>VFP's SQL engine is not as powered,
>and a hugly solution can to be founded only.
>
>
>CREATE CURSOR table (customer C(1), date D,value I)
>
>INSERT INTO table VALUES ('A',DATE(2007,01,01),1)
>INSERT INTO table VALUES ('A',DATE(2007,01,02),2)
>INSERT INTO table VALUES ('A',DATE(2007,01,03),3)
>INSERT INTO table VALUES ('A',DATE(2007,01,04),4)
>INSERT INTO table VALUES ('A',DATE(2007,01,05),5)
>INSERT INTO table VALUES ('A',DATE(2007,01,06),6)
>INSERT INTO table VALUES ('A',DATE(2007,01,07),7)
>INSERT INTO table VALUES ('A',DATE(2007,01,08),8)
>INSERT INTO table VALUES ('B',DATE(2007,01,02),2)
>INSERT INTO table VALUES ('B',DATE(2007,01,03),3)
>INSERT INTO table VALUES ('B',DATE(2007,01,04),4)
>INSERT INTO table VALUES ('B',DATE(2007,01,05),5)
>INSERT INTO table VALUES ('B',DATE(2007,01,16),6)
>INSERT INTO table VALUES ('B',DATE(2007,01,17),7)
>INSERT INTO table VALUES ('B',DATE(2007,01,18),8)
>INSERT INTO table VALUES ('C',DATE(2007,01,17),7)
>INSERT INTO table VALUES ('C',DATE(2007,01,18),8)
>
>* the correct solution, but ...
>SELECT customer, date,value;
>	FROM table T where T.date IN (SELECT TOP 5 date FROM table WHERE customer = T.customer ORDER BY date DESC)
>
>* a long way solution, but ...
>SELECT customer, date,value;
>	FROM table T ;
>	WHERE (SELECT COUNT(*) FROM table X WHERE X.customer = T.customer AND X.date >= T.date ) <=5
>
>* another long solution
>SELECT customer, date,value;
>	, (SELECT COUNT(*) FROM table X WHERE X.customer = T.customer AND X.date >= T.date ) cn;
>	FROM table T ;
>	HAVING  cn<=5
>
Words are given to man to enable him to conceal his true feelings.
Charles Maurice de Talleyrand-Périgord

Weeks of programming can save you hours of planning.

Off

There is no place like [::1]
Previous
Next
Reply
Map
View

Click here to load this message in the networking platform