Reply
 
LinkBack Thread Tools Search this Thread Display Modes
  #1   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 1
Default SQL - TOP 1 Usage

Hi All,

I'm having difficulty getting the TOP 1 statement to work.

I have two tables, SLT and SLH. I am linking them, by field 'cref
(primary key). SLH has multiple instances of cref matches; all
require is the most recent date against the cref criteria.

The query is to show customer debts (SLT) over 90 days old, then thei
last payment date (from SLH).

For example, I can get this to do what I want:

SELECT SLT.slt_cref, SLT.slt_type, SLT.slt_fcval, SLT.slt_alloc
Max(SLH.slh_date) AS 'Max of slh_date'
FROM {oj root.SLT SLT LEFT OUTER JOIN root.SLH SLH ON SLT.slt_cref
SLH.slh_cref}
WHERE (SLT.slt_date<={d '2004-04-30'})
GROUP BY SLT.slt_cref, SLT.slt_type, SLT.slt_fcval, SLT.slt_alloc

The most recent date in SLH, found against each cref match, is returne
for each cref returned from SLT. This is fine.

However, the query takes a long time to run. So, I have read that th
TOP 1 statement could be used instead. However, I am unsure how to us
it. Could somebody please help?

I tried:

SELECT SLT.slt_cref, SLT.slt_type, SLT.slt_fcval, SLT.slt_alloc, TOP
slh.slh_date
FROM {oj root.SLT SLT LEFT OUTER JOIN root.SLH SLH ON SLT.slt_cref
SLH.slh_cref}
WHERE (SLT.slt_date<={d '2004-04-30'})
GROUP BY SLT.slt_cref, SLT.slt_type, SLT.slt_fcval, SLT.slt_alloc
ORDER BY slh.slh_cref, slh.slh_date DESC

However, I receive, 'Didn't expect 'slh' after the SELECT colum
list'.

All suggestions and comments gratefully received.

Elliot
MS Query via Excel 2000
Transoft USQL Middleware on Linux RedHat Sculptor 4GL Databas

--
Message posted from http://www.ExcelForum.com

  #2   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 860
Default SQL - TOP 1 Usage

Hi ell,

A subquery may work in this case:

SELECT SLT.slt_cref, SLT.slt_type, SLT.slt_fcval, SLT.slt_alloc,
(SELECT TOP 1 SLH.slh_date
FROM root.SLH SLH
WHERE SLH.slh_cref=SLT.slt_cref
ORDER BY SLH.slh_date DESC)
FROM root.SLT SLT
ORDER BY SLT.slt_cref

Without having the database structure, I can only assume this will work - it
looks like it should. This query should return the cref, type, fcval,
alloc, and slh_date for each cref in your SLT table.

--
Regards,

Jake Marx
MS MVP - Excel
www.longhead.com

[please keep replies in the newsgroup - email address unmonitored]


Hi All,

I'm having difficulty getting the TOP 1 statement to work.

I have two tables, SLT and SLH. I am linking them, by field 'cref'
(primary key). SLH has multiple instances of cref matches; all I
require is the most recent date against the cref criteria.

The query is to show customer debts (SLT) over 90 days old, then their
last payment date (from SLH).

For example, I can get this to do what I want:

SELECT SLT.slt_cref, SLT.slt_type, SLT.slt_fcval, SLT.slt_alloc,
Max(SLH.slh_date) AS 'Max of slh_date'
FROM {oj root.SLT SLT LEFT OUTER JOIN root.SLH SLH ON SLT.slt_cref =
SLH.slh_cref}
WHERE (SLT.slt_date<={d '2004-04-30'})
GROUP BY SLT.slt_cref, SLT.slt_type, SLT.slt_fcval, SLT.slt_alloc

The most recent date in SLH, found against each cref match, is
returned for each cref returned from SLT. This is fine.

However, the query takes a long time to run. So, I have read that the
TOP 1 statement could be used instead. However, I am unsure how to use
it. Could somebody please help?

I tried:

SELECT SLT.slt_cref, SLT.slt_type, SLT.slt_fcval, SLT.slt_alloc, TOP 1
slh.slh_date
FROM {oj root.SLT SLT LEFT OUTER JOIN root.SLH SLH ON SLT.slt_cref =
SLH.slh_cref}
WHERE (SLT.slt_date<={d '2004-04-30'})
GROUP BY SLT.slt_cref, SLT.slt_type, SLT.slt_fcval, SLT.slt_alloc
ORDER BY slh.slh_cref, slh.slh_date DESC

However, I receive, 'Didn't expect 'slh' after the SELECT column
list'.

All suggestions and comments gratefully received.

Elliot
MS Query via Excel 2000
Transoft USQL Middleware on Linux RedHat Sculptor 4GL Database


  #3   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 1
Default SQL - TOP 1 Usage

Hi Jake,

Thank you for the feedback.

I have tried the query you kindly submitted, but my SQL software i
displaying the following error:

*** Error: ')' expected here (TOP)

Assuming it's expecting another closed bracket, I can't figure ou
where.

The structure for my two tables of interest are as follows:

SLT
fldname type length offset
slt_cref A 6 0
slt_date D 4 6
slt_ref A 10 10
slt_type A 5 20
slt_ref2 A 20 25
slt_oldind A 1 45
slt_am1 M 4 46
slt_am2 M 4 50
slt_alloc M 4 54
slt_fwdalloc M 4 58
slt_duedate D 4 62
slt_disc M 4 66
slt_setdate D 4 70
slt_setdisc M 4 74
slt_cost M 4 78
slt_perno I 1 82
slt_exch R 8 83
slt_fcval R 8 91
slt_fcdisc R 8 99
slt_fcall R 8 107
slt_fcfwdall R 8 115
slt_perenddate D 4 123
slt_yrenddate D 4 127
slt_entdate D 4 131
slt_time M 4 135
slt_loginid A 8 139
slt_finperno I 1 147
slt_batchno I 2 148
slt_batchtrno I 2 150
slt_filler A 28 152

SLH
fldname type length offset
slh_cref A 6 0
slh_date D 4 6
slh_am2 M 4 49
slh_duedate D 4 53
slh_disc M 4 57
slh_setdate D 4 61
slh_setdisc M 4 65
slh_cost M 4 69
slh_exch R 8 73
slh_fcval R 8 81
slh_fcdisc R 8 89
slh_perenddate D 4 97
slh_yrenddate D 4 101
slh_entdate D 4 105
slh_time M 4 109
slh_loginid A 8 113
slh_finperno I 1 121
slh_batchno I 2 122
slh_batchtrno I 2 124
slh_age I 1 126
slh_filler A 1 127

These are indexed fields:
slh_ref, slh_cref, slh_date
slt_ref, slt_cref, slh_date

But the two tables can only be linked via the *_cref field.

Is that what you implied by structure?


Thank you once again for any assistance.

Elliot

Jake Marx wrote:
*Hi ell,

A subquery may work in this case:

SELECT SLT.slt_cref, SLT.slt_type, SLT.slt_fcval, SLT.slt_alloc,
(SELECT TOP 1 SLH.slh_date
FROM root.SLH SLH
WHERE SLH.slh_cref=SLT.slt_cref
ORDER BY SLH.slh_date DESC)
FROM root.SLT SLT
ORDER BY SLT.slt_cref

Without having the database structure, I can only assume this wil
work - it
looks like it should. This query should return the cref, type
fcval,
alloc, and slh_date for each cref in your SLT table.

--
Regards,

Jake Marx
MS MVP - Excel
www.longhead.com

[please keep replies in the newsgroup - email address unmonitored]


Hi All,

I'm having difficulty getting the TOP 1 statement to work.

I have two tables, SLT and SLH. I am linking them, by field 'cref'
(primary key). SLH has multiple instances of cref matches; all I
require is the most recent date against the cref criteria.

The query is to show customer debts (SLT) over 90 days old, the

their
last payment date (from SLH).

For example, I can get this to do what I want:

SELECT SLT.slt_cref, SLT.slt_type, SLT.slt_fcval, SLT.slt_alloc,
Max(SLH.slh_date) AS 'Max of slh_date'
FROM {oj root.SLT SLT LEFT OUTER JOIN root.SLH SLH ON SLT.slt_cre

=
SLH.slh_cref}
WHERE (SLT.slt_date<={d '2004-04-30'})
GROUP BY SLT.slt_cref, SLT.slt_type, SLT.slt_fcval, SLT.slt_alloc

The most recent date in SLH, found against each cref match, is
returned for each cref returned from SLT. This is fine.

However, the query takes a long time to run. So, I have read tha

the
TOP 1 statement could be used instead. However, I am unsure how t

use
it. Could somebody please help?

I tried:

SELECT SLT.slt_cref, SLT.slt_type, SLT.slt_fcval, SLT.slt_alloc

TOP 1
slh.slh_date
FROM {oj root.SLT SLT LEFT OUTER JOIN root.SLH SLH ON SLT.slt_cre

=
SLH.slh_cref}
WHERE (SLT.slt_date<={d '2004-04-30'})
GROUP BY SLT.slt_cref, SLT.slt_type, SLT.slt_fcval, SLT.slt_alloc
ORDER BY slh.slh_cref, slh.slh_date DESC

However, I receive, 'Didn't expect 'slh' after the SELECT column
list'.

All suggestions and comments gratefully received.

Elliot
MS Query via Excel 2000
Transoft USQL Middleware on Linux RedHat Sculptor 4GL Database


--
Message posted from http://www.ExcelForum.com

  #4   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 860
Default SQL - TOP 1 Usage

Hi ell,

I have tried the query you kindly submitted, but my SQL software is
displaying the following error:

*** Error: ')' expected here (TOP)


I think this may be the stumbling block:

Transoft USQL Middleware on Linux RedHat Sculptor 4GL Database


I tried a similar query hitting SQL Server via MS Query (XL 2002), and it
worked fine even though MS Query couldn't represent the query graphically.
So maybe the middleware or the DB itself doesn't like the syntax. You could
try adding/removing parenthesis to see if you can get it to work, but I
don't have either of those tools, so I can't test it any further. Good
luck!

--
Regards,

Jake Marx
MS MVP - Excel
www.longhead.com

[please keep replies in the newsgroup - email address unmonitored]

  #5   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 1
Default SQL - TOP 1 Usage

Jake Marx wrote:
*Hi ell,

I have tried the query you kindly submitted, but my SQL software

is
displaying the following error:

*** Error: ')' expected here (TOP)


I think this may be the stumbling block:

Transoft USQL Middleware on Linux RedHat Sculptor 4GL Database


I tried a similar query hitting SQL Server via MS Query (XL 2002),
and it
worked fine even though MS Query couldn't represent the query
graphically.
So maybe the middleware or the DB itself doesn't like the syntax.
You could
try adding/removing parenthesis to see if you can get it to work, but
I
don't have either of those tools, so I can't test it any further.
Good
luck!

--
Regards,

Jake Marx
MS MVP - Excel
www.longhead.com

[please keep replies in the newsgroup - email address unmonitored] *


Thanks again for the reply, Jake.

I suspected that there were some syntax conflicts at play.

I have contacted the supplier of our SQL driver, and Transoft directly,
for some help regarding syntax structure. Hopefully I should hear from
them soon.

Ell


---
Message posted from http://www.ExcelForum.com/



  #6   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 593
Default SQL - TOP 1 Usage

"Jake Marx" wrote ...

*** Error: ')' expected here (TOP)


I think this may be the stumbling block:


See various posts:

http://groups.google.com/groups?q=%2...prietary+celko

e.g. "SELECT TOP (n)is a non-relational, strictly (MS) proprietary
"feature"... (use) a subquery to establish a subset based on a count."

Jamie.

--
  #7   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 860
Default SQL - TOP 1 Usage

Jamie Collins wrote:
*** Error: ')' expected here (TOP)


I think this may be the stumbling block:


See various posts:

http://groups.google.com/groups?q=%2...prietary+celko

e.g. "SELECT TOP (n)is a non-relational, strictly (MS) proprietary
"feature"... (use) a subquery to establish a subset based on a count."



Looks like at least some version(s) of U/SQL support the "TOP n" feature,
however:

http://www.transoft.com/support/RelN...USQL310407.htm

But I would guess you're probably correct if the OP can't get 2 different
TOP n queries to work.

--
Regards,

Jake Marx
MS MVP - Excel
www.longhead.com

[please keep replies in the newsgroup - email address unmonitored]

Reply
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules

Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
About the usage of the function Keith Hui Excel Worksheet Functions 1 March 31st 09 04:12 PM
limited usage jinvictor Excel Discussion (Misc queries) 1 June 14th 06 04:28 PM
100% cpu usage bill Excel Discussion (Misc queries) 1 March 2nd 06 10:27 AM
Cursor Usage DJB Excel Discussion (Misc queries) 2 September 15th 05 06:59 PM
CopyFile usage Garry[_5_] Excel Programming 1 January 19th 04 08:56 PM


All times are GMT +1. The time now is 10:10 PM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Copyright ©2004-2025 ExcelBanter.
The comments are property of their posters.
 

About Us

"It's about Microsoft Excel"