| From: | Balázs Klein <Balazs(dot)Klein(at)t-online(dot)hu> |
|---|---|
| To: | "'Erik Jones'" <erik(at)myemma(dot)com> |
| Cc: | "'Tino Wildenhain'" <tino(at)wildenhain(dot)de>, <pgsql-general(at)postgresql(dot)org> |
| Subject: | Re: dynamic crosstab |
| Date: | 2008-02-15 15:56:22 |
| Message-ID: | 20080215155622.AE10FACB94@mail00a.mail.t-online.hu |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-general |
> given that answers for a questionnaire are stored as a
> batch
Not in our setup - for all sorts of reasons (preserving responses on a connection failure or restart, monitoring response latency in real time, creating adaptive/branching questionnaires) we send each response separately.
> people running reports on will be the ones to notice, i.e. at
> retrieval time.
I am not sure - different responses are aggregated into different attributes in different ways - those properties need to be retrieved during scoring/report generation, so being able to create a join directly on a response is a good thing for me. But report generation - in our case it must be a DTP quality PDF - is such a beast anyway that db times dwarf compared to pdf generation.
The problem comes when I need to present the responses themselves in a human-friendly way - as an export or display or report. Do you think there is a way to ensure that the order of the values in the array below is the same for each person?
tbl(eID, aID, value)
Select eID, array_accum(value) from
(
(Select Distinct eID from tbl) e
CROSS JOIN
(Select Distinct aID from tbl) a
) ea
LEFT OUTER JOIN
tbl USING (eID, aID)
GROUP BY eID
Thx for the help.
B.
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Erik Jones | 2008-02-15 15:56:38 | Re: dynamic crosstab |
| Previous Message | Richard Huxton | 2008-02-15 15:54:20 | Re: Are indexes blown? |