PC Review


Reply
Thread Tools Rate Thread

Crosstab column data count

 
 
tmb
Guest
Posts: n/a
 
      12th May 2010
I have a crosstab query with Well Name as row heading , site visit Dates as
column headings (formatted as "yyyy"), and averaged water level measurements
data as the values. The column headings range from 2004-2010 and some wells
have no measurements during some of these years.

I need to create a dataset from the crosstab that shows total number of
years for which each well has data. My attempts at changing the column
headings and values around to accomplish this have been futile. Please help.
 
Reply With Quote
 
 
 
 
KARL DEWEY
Guest
Posts: n/a
 
      12th May 2010
Post your crosstab SQL.
--
Build a little, test a little.


"tmb" wrote:

> I have a crosstab query with Well Name as row heading , site visit Dates as
> column headings (formatted as "yyyy"), and averaged water level measurements
> data as the values. The column headings range from 2004-2010 and some wells
> have no measurements during some of these years.
>
> I need to create a dataset from the crosstab that shows total number of
> years for which each well has data. My attempts at changing the column
> headings and values around to accomplish this have been futile. Please help.

 
Reply With Quote
 
Krzysztof Naworyta
Guest
Posts: n/a
 
      12th May 2010
tmb wrote:
| I have a crosstab query with Well Name as row heading , site visit
| Dates as column headings (formatted as "yyyy"), and averaged water
| level measurements data as the values. The column headings range from
| 2004-2010 and some wells have no measurements during some of these
| years.
|
| I need to create a dataset from the crosstab that shows total number
| of years for which each well has data. My attempts at changing the
| column headings and values around to accomplish this have been
| futile. Please help.

TRANSFORM Avg(water_level) AS x
SELECT well, count(x) as years
FROM MyTable
GROUP BY well
PIVOT Year([visit_date]);


--
KN
 
Reply With Quote
 
Duane Hookom
Guest
Posts: n/a
 
      13th May 2010
It isn't really clear what you would expect to return in the Count(X) as
Years. You could create a totals query that groups by Well and Year. Then
create another totals query that groups by Well and counts the number of
years. Add this to your crosstab and join the Well columns and group by the
CountOfYears.

--
Duane Hookom
MS Access MVP


"Krzysztof Naworyta" <(E-Mail Removed)> wrote in message
news:hse6kk$7ss$(E-Mail Removed)...
> tmb wrote:
> | I have a crosstab query with Well Name as row heading , site visit
> | Dates as column headings (formatted as "yyyy"), and averaged water
> | level measurements data as the values. The column headings range from
> | 2004-2010 and some wells have no measurements during some of these
> | years.
> |
> | I need to create a dataset from the crosstab that shows total number
> | of years for which each well has data. My attempts at changing the
> | column headings and values around to accomplish this have been
> | futile. Please help.
>
> TRANSFORM Avg(water_level) AS x
> SELECT well, count(x) as years
> FROM MyTable
> GROUP BY well
> PIVOT Year([visit_date]);
>
>
> --
> KN


 
Reply With Quote
 
Krzysztof Naworyta
Guest
Posts: n/a
 
      13th May 2010
Duane Hookom wrote:
| It isn't really clear what you would expect to return in the Count(X)
| as Years.

You can get any aggregate value from pivotet columns, by using its alias:

TRANSFORM Avg(water_level) AS x
SELECT
well
, count(x)
, avg(x)
, sum(x)

FROM MyTable
GROUP BY well
PIVOT Year([visit_date]);

You can see that it is different than:

TRANSFORM Avg(water_level) AS x
SELECT
well
, count(water_level)
, avg(water_level)
, sum(water_level)

FROM MyTable
GROUP BY well
PIVOT Year([visit_date]);

--
KN
 
Reply With Quote
 
Krzysztof Naworyta
Guest
Posts: n/a
 
      14th May 2010
Krzysztof Naworyta wrote:

|| It isn't really clear what you would expect to return in the Count(X)
|| as Years.
|
| You can get any aggregate value from pivotet columns, by using its
| alias:
|
| TRANSFORM Avg(water_level) AS x
| SELECT
| well
| , count(x) as c1
| , avg(x) as a1
| , sum(x) as s1
|
| FROM MyTable
| GROUP BY well
| PIVOT Year([visit_date]);

Columns c1, a1, s1 are equal to c2,a2,s2:

SELECT
well
, Count(x) AS c2
, Avg(x) AS a2
, Sum(x) AS s2

FROM
(
SELECT
well
, Year([date1]) AS y
, Avg(water_level) AS x
FROM MyTable
GROUP BY
well
, Year([date1])
) tmp
GROUP BY
well;

--
KN
 
Reply With Quote
 
vanderghast
Guest
Posts: n/a
 
      14th May 2010
Indeed, if you aggregate on the alias of the TRANSFORMed expression, the
result is "as if" you would have aggregated HORIZONTALLY in the crosstab.

Here, a given row, a given well, may not have a value for each PIVOT
YEAR(visit), and for those "cells", a null is supplied and then, the
horizontal aggregate COUNT on these columns does not count the year where
there is no data, returning the number of year with some data, for the given
well. So you get a DISTINCT COUNT.

It is a short cut which allows, in ONE query, to aggregate over aggregate (a
vertical aggregate and next, an horizontal one over the vertical aggregated
just done, assuming you are in a visual representation).

You can even remove the generated fields from the result by adding an
IN(NULL) to the PIVOT expression., and you will be left with the
'horizontal' final aggregate.

(From initial observations reported by Steve Dassin, in my best knowledge).


Vanderghast, Access MVP

 
Reply With Quote
 
 
 
Reply

Thread Tools
Rate This Thread
Rate This Thread:

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

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


Similar Threads
Thread Thread Starter Forum Replies Last Post
Count cells w/values in column if the data in column a matches cri mdcgpw Microsoft Excel Worksheet Functions 3 11th Jan 2009 09:00 PM
I need to count data in one colum based on data in another column =?Utf-8?B?TEc=?= Microsoft Excel Worksheet Functions 1 13th Jun 2006 02:41 PM
Changing data under the column heading in a crosstab query =?Utf-8?B?Um9iaW4=?= Microsoft Access Queries 1 15th Nov 2004 11:18 AM
crosstab query column headers do not match data in cells =?Utf-8?B?bWFydHlj?= Microsoft Access Queries 1 27th Oct 2004 10:06 PM
Column Headings & Data don't match in Crosstab report Bill Nguyen Microsoft VB .NET 1 16th Oct 2003 07:53 PM


Features
 

Advertising
 

Newsgroups
 


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