Re: Complex Subquery: ...FROM(TRANSFORM... systax - (fixed linebreaks)
From: Stephen Rasey (raseysm_at_wiserways.com)
Date: 08/24/04
- Next message: R. BRADFORD THOMAS: "Building Query Criteria"
- Previous message: John Vinson: "Re: subtract dates"
- In reply to: Lynn Trapp: "Re: Complex Subquery: ...FROM(TRANSFORM... systax - (fixed linebreaks)"
- Next in thread: Pike: "Re: Complex Subquery: ...FROM(TRANSFORM... systax - (fixed linebreaks)"
- Reply: Pike: "Re: Complex Subquery: ...FROM(TRANSFORM... systax - (fixed linebreaks)"
- Messages sorted by: [ date ] [ thread ]
Date: Tue, 24 Aug 2004 14:08:23 -0500
the table B reference is in
INNER JOIN B On....
That first query was a simple one for illistration to highlight the FROM
(TRANSFORM..
. Next time, I'll use tblA, tblB.
Toward the bottom I have the (disguised) real query
SELECT T5.OO, T5.DD, T5.AvgOfYY, T5.AvgOfCC, T5.AvgOfCumCapexTrace, T4.*
FROM
(SELECT T2.A2IDSet, T2.OO, T2.DD, Avg(H71.YY) AS AvgOfYY, Avg(H71.CC)
AS
AvgOfCC, Avg(H71.TT) AS AvgOfTT
FROM (H80 INNER JOIN AS H71 ON H80.IDHash = H71.IDHash)
INNER JOIN T2 ON H71.OO = T2.OO
WHERE (((H80.IDTraceH) In (1410,1488,1520)))
GROUP BY T2.A2IDSet, T2.OO, T2.DD
ORDER BY Avg(H71.YY), Avg(H71.CC))
AS T5
INNER JOIN
( TRANSFORM First([YY] & " @ " & Format([CC],"#")) AS Score
SELECT T2.A2IDSet, T2.OO, T2.DD
FROM (H80 INNER JOIN H71 ON H80.IDHash = H71.IDHash)
INNER JOIN T2 ON H71.OO = T2.OO
WHERE (((H80.IDTraceH) In (1410,1488,1520)))
GROUP BY T2.A2IDSet, T2.OO, T2.DD
ORDER BY T2.OO
PIVOT H80.IDTraceH)
AS T4 ON T5.OO = T4.OO
ORDER BY T5.AvgOfYY, T5.AvgOfCC;
Stephen Rasey
Houston
"Lynn Trapp" <ltrappNoSpam@ltcomputerdesigns.com> wrote in message
news:unhfYsgiEHA.1376@TK2MSFTNGP11.phx.gbl...
> So what is "B"? You use it in your select statement AND in your join
> statement, but it is never identified anywhere in a from clause. Is "B"
the
> name of the table or is it intended to be an alias to some other table
name?
>
> --
> Lynn Trapp
> MS Access MVP
> www.ltcomputerdesigns.com
> Access Security: www.ltcomputerdesigns.com/Security.htm
>
>
> "Stephen Rasey" <raseysm@wiserways.com> wrote in message
> news:OjS28dgiEHA.3664@TK2MSFTNGP11.phx.gbl...
> > Summary Question:
> >
> > Is it possible to in Access SQL or SQLServer SQL to have a Compound SQL
> > statement where one of the inner queryies is a crosstab TRANSFORM query
as
> > in:
> > SELECT A.*,B.*
> > FROM
> > (TRANSFORM Score
> > SELECT t2.C, t2.D FROM T2
> > GROUP By T2.C, T2D
> > ORDER BY T2.C
> > PIVOT T2.E) As A
> > INNER JOIN B ON A.C = B.C;
> >
> > I get a syntax error. I suspect that a TRANSFORM cannot be an inline
> > subquery, but maybe there is a simple syntax error.
> >
> > Stephen Rasey
> > Houston
> > http://wiserways.com
> > http://excelsig.org
> >
> > Question in Detail:
> >
> > This is a cross tab query that works.
> > Call it J1T4qxt.
> > TRANSFORM First([YY] & " @ " & Format([CC],"#")) AS Score
> > SELECT T2.A2IDSet, T2.OO, T2.DD
> > FROM (H80 INNER JOIN H71 ON H80.IDHash = H71.IDHash)
> > INNER JOIN T2 ON H71.OO = T2.OO
> > WHERE (((H80.IDTraceH) In (1410,1488,1520)))
> > GROUP BY T2.A2IDSet, T2.OO, T2.DD
> > ORDER BY T2.OO
> > PIVOT H80.IDTraceH;
> >
> > Note the WHERE ... IN clause. I need the PK's in the cross tab query
to
> > have high speed.
> >
> > I need to sort the results based upon an Aggregate. This, too, runs
> > quickly.
> > A subquery for the sort is J1T5qnu
> >
> > SELECT T2.A2IDSet, T2.OO, T2.DD, Avg(H71.YY) AS AvgOfYY, Avg(H71.CC) AS
> > AvgOfCC, Avg(H71.TT) AS AvgOfTT
> > FROM (H80 INNER JOIN AS H71 ON H80.IDHash = H71.IDHash)
> > INNER JOIN T2 ON H71.OO = T2.OO
> > WHERE (((H80.IDTraceH) In (1410,1488,1520)))
> > GROUP BY T2.A2IDSet, T2.OO, T2.DD
> > ORDER BY Avg(H71.YY), Avg(H71.CC);
> >
> > This WHERE has the same IN Clause as J1T4.
> >
> > I join J1T4 and J1T5 for the final result. It is a fast query for what
> it
> > does. About 3 sec.
> >
> > J1T6:
> > SELECT T5.OO, T5.DD, T5.AvgOfYY, T5.AvgOfCC, T5.AvgOfCumCapexTrace, T4.*
> > FROM J1T5qnu AS T5 INNER JOIN J1T4qxt AS T4 ON T5.OO = T4.OO
> > ORDER BY T5.AvgOfYY, T5.AvgOfCC;
> >
> > The problem is that J1T5 and J1T6 both have an ' In (1410,1488,1520) '
> > clause that is necessary for speed of execution.
> >
> > To make this useful, the parent application must change the IN clause
> > dynamically.
> >
> > My options are:
> >
> > 1. use Parameter queries for J1T5 and J1T4. I've never tried
> Parameters
> > for an entire IN clause so I don't know if that will work at all. I
> guess
> > this is another question to post.
> >
> > 2. Create another table H81 that has only the IDTraceH values to use
and
> > rewrite J1T5 and J1T6 to JOIN on H81.
> >
> > 3. Build J1T4 and J1T5 in QueryDef and Execute J1T6. I think option
2
> > is superior to this.
> >
> > 4. Create a compound SQL string programatically that will look
something
> > like this:
> >
> > SELECT T5.OO, T5.DD, T5.AvgOfYY, T5.AvgOfCC, T5.AvgOfCumCapexTrace, T4.*
> > FROM
> > (SELECT T2.A2IDSet, T2.OO, T2.DD, Avg(H71.YY) AS AvgOfYY, Avg(H71.CC)
> AS
> > AvgOfCC, Avg(H71.TT) AS AvgOfTT
> > FROM (H80 INNER JOIN AS H71 ON H80.IDHash = H71.IDHash)
> > INNER JOIN T2 ON H71.OO = T2.OO
> > WHERE (((H80.IDTraceH) In (1410,1488,1520)))
> > GROUP BY T2.A2IDSet, T2.OO, T2.DD
> > ORDER BY Avg(H71.YY), Avg(H71.CC))
> > AS T5
> > INNER JOIN
> > ( TRANSFORM First([YY] & " @ " & Format([CC],"#")) AS Score
> > SELECT T2.A2IDSet, T2.OO, T2.DD
> > FROM (H80 INNER JOIN H71 ON H80.IDHash = H71.IDHash)
> > INNER JOIN T2 ON H71.OO = T2.OO
> > WHERE (((H80.IDTraceH) In (1410,1488,1520)))
> > GROUP BY T2.A2IDSet, T2.OO, T2.DD
> > ORDER BY T2.OO
> > PIVOT H80.IDTraceH)
> >
> > AS T4 ON T5.OO = T4.OO
> > ORDER BY T5.AvgOfYY, T5.AvgOfCC;
> >
> > When I try this, I get a " Syntax Error in FROM Clause" and TRANSFORM is
> > highlighted.
> >
> > I have pretty well decided to go with Option 2. But I thought I would
> ask:
> >
> > Does anyone have a why of making Option 4 work?
> >
> > Can anyone think of an option 5?
> >
> > Thank you for your time.
> >
> > Stephen Rasey
> > Houston
> > http://wiserways.com
> > http://excelsig.org
> >
> >
>
>
- Next message: R. BRADFORD THOMAS: "Building Query Criteria"
- Previous message: John Vinson: "Re: subtract dates"
- In reply to: Lynn Trapp: "Re: Complex Subquery: ...FROM(TRANSFORM... systax - (fixed linebreaks)"
- Next in thread: Pike: "Re: Complex Subquery: ...FROM(TRANSFORM... systax - (fixed linebreaks)"
- Reply: Pike: "Re: Complex Subquery: ...FROM(TRANSFORM... systax - (fixed linebreaks)"
- Messages sorted by: [ date ] [ thread ]
Relevant Pages
|