Re: [SQL] SQL Challenge: Arbitrary Cross-tab

2004-08-19 Thread Tom Lane
"Greg Sabino Mullane" <[EMAIL PROTECTED]> writes: >> Nope; Gaetano's right, you cannot assume that. It's entirely possible >> for the planner to choose different plans depending on the OFFSET. >> (Maybe not very likely, with such small offsets, but could happen.) > Interesting. I realized that t

Re: [SQL] SQL Challenge: Arbitrary Cross-tab

2004-08-19 Thread Greg Sabino Mullane
-BEGIN PGP SIGNED MESSAGE- Hash: SHA1 > Nope; Gaetano's right, you cannot assume that. It's entirely possible > for the planner to choose different plans depending on the OFFSET. > (Maybe not very likely, with such small offsets, but could happen.) Interesting. I realized that there

Re: [SQL] SQL Challenge: Arbitrary Cross-tab

2004-08-18 Thread Josh Berkus
Joe, > case_id | tk1 | tk2 | tk3 | tk4 | tk5 | tk6 | tk7 | tk8 > -+-+-+-+-+-+-+-+- >132113 | 021 | 115 | 106 | | | | | >14 | 106 | 021 | 115 | 108 | 006 | 042 | 142 | 064 >213447 | 047 | | | | | | |

Re: [SQL] SQL Challenge: Arbitrary Cross-tab

2004-08-18 Thread Joe Conway
Josh Berkus wrote: This is pretty much exactly how contrib/tablefunc's crosstab (non-hashed version; crosstab(sourcesql, ncols)) works. If you really need it to be portable, though, application layer procedural code is likely to be the easiest and fastest way to go. crosstab just wraps the procedur

Re: [SQL] SQL Challenge: Arbitrary Cross-tab

2004-08-18 Thread Josh Berkus
Joe, Elein: > This is pretty much exactly how contrib/tablefunc's crosstab (non-hashed > version; crosstab(sourcesql, ncols)) works. If you really need it to be > portable, though, application layer procedural code is likely to be the > easiest and fastest way to go. crosstab just wraps the proced

Re: [SQL] SQL Challenge: Arbitrary Cross-tab

2004-08-18 Thread Chris Travers
Josh Berkus wrote: Folks, I have a wierd business case. Annoyingly it has to be written in *portable* SQL92, which means no arrays or custom aggregates. I think it may be impossible to do in SQL which is why I thought I'd give the people on this list a crack at it. Solver gets a free drink/

Re: [SQL] SQL Challenge: Arbitrary Cross-tab

2004-08-18 Thread Tom Lane
"Greg Sabino Mullane" <[EMAIL PROTECTED]> writes: >> Don't you miss for each subselect an order by tid ? > No: since all the SELECTs are part of one statement, they > will have the same (pseudo-random) implicit order. Nope; Gaetano's right, you cannot assume that. It's entirely possible for the

Re: [SQL] SQL Challenge: Arbitrary Cross-tab

2004-08-18 Thread Gaetano Mendola
Greg Sabino Mullane wrote: Don't you miss for each subselect an order by tid ? No: since all the SELECTs are part of one statement, they will have the same (pseudo-random) implicit order. Is this guaranted ? Regards Gaetano Mendola ---(end of broadcast)---

Re: [SQL] SQL Challenge: Arbitrary Cross-tab

2004-08-18 Thread Greg Sabino Mullane
-BEGIN PGP SIGNED MESSAGE- Hash: SHA1 > Don't you miss for each subselect an order by tid ? No: since all the SELECTs are part of one statement, they will have the same (pseudo-random) implicit order. Since Josh's requirement said the order of the tids* was not important, I can be la

Re: [SQL] SQL Challenge: Arbitrary Cross-tab

2004-08-18 Thread Gaetano Mendola
Greg Sabino Mullane wrote: Names shortened to spare the line lengths: SELECT bob.cid, (SELECT tid FROM ats WHERE cid=bob.cid LIMIT 1) AS tk1, (SELECT tid FROM ats WHERE cid=bob.cid LIMIT 1 OFFSET 1) AS tk2, (SELECT tid FROM ats WHERE cid=bob.cid LIMIT 1 OFFSET 2) AS tk3, (SELECT tid FROM at

Re: [SQL] SQL Challenge: Arbitrary Cross-tab

2004-08-17 Thread Joe Conway
Josh Berkus wrote: The Problem: for each "case" there are from zero to eight "timekeepers" authorized to work on the "case", out of a pool of 150 "timekeepers". This data is stored vertically: authorized_timekeepers: case_id | timekeeper_id 213447 | 047 132113 | 021 132113 | 115 132

Re: [SQL] SQL Challenge: Arbitrary Cross-tab

2004-08-17 Thread Josh Berkus
Greg, Stephan, > (SELECT tid FROM ats WHERE cid=bob.cid LIMIT 1 OFFSET 1) AS tk2, bz! Thanks for playing. LIMIT and OFFSET, sadly, are not SQL standard. They're only portable to MySQL. This has to port to SQL Server and Oracle. > If that works for 3 (and I think that's standard behav

Re: [SQL] SQL Challenge: Arbitrary Cross-tab

2004-08-17 Thread Greg Sabino Mullane
-BEGIN PGP SIGNED MESSAGE- Hash: SHA1 Names shortened to spare the line lengths: SELECT bob.cid, (SELECT tid FROM ats WHERE cid=bob.cid LIMIT 1) AS tk1, (SELECT tid FROM ats WHERE cid=bob.cid LIMIT 1 OFFSET 1) AS tk2, (SELECT tid FROM ats WHERE cid=bob.cid LIMIT 1 OFFSET 2) AS

Re: [SQL] SQL Challenge: Arbitrary Cross-tab

2004-08-17 Thread Stephan Szabo
On Tue, 17 Aug 2004, Josh Berkus wrote: > I have a wierd business case. Annoyingly it has to be written in *portable* > SQL92, which means no arrays or custom aggregates. I think it may be > impossible to do in SQL which is why I thought I'd give the people on this > list a crack at it. Solve

Re: [SQL] SQL Challenge: Arbitrary Cross-tab

2004-08-17 Thread elein
I would use my report writer, but in any case you'd want at least 2 separate queries, maybe three to keep it simple and readable. If you are allowed to use stored procedures you can build up the output by using simple concats instead of text aggregation (which is a procedure of simple concats).

[SQL] SQL Challenge: Arbitrary Cross-tab

2004-08-17 Thread Josh Berkus
Folks, I have a wierd business case. Annoyingly it has to be written in *portable* SQL92, which means no arrays or custom aggregates. I think it may be impossible to do in SQL which is why I thought I'd give the people on this list a crack at it. Solver gets a free drink/lunch on me if we