On Aug 22, 2007, at 20:49 , Ben Tilly wrote:

If your implementation accepts:

  group by case when true then 'foo' end

What would that mean? Regardless of whether or not it's accepted, it should have *some* meaning.

It's not equivalent to GROUP BY "foo"

test=# select record_id as foo
    , count(observation_id) as bar
    from observation
    group by case when true
                  then 'foo'
             end;
ERROR: column "observation.record_id" must appear in the GROUP BY clause or be used in an aggregate function
test=# select record_id
       , count(observation_id) as bar
       from observation
       group by case when true
                     then 'record_id'
                end;
ERROR: column "observation.record_id" must appear in the GROUP BY clause or be used in an aggregate function

*This* seems like a bug:
test=# select record_id
       , count(observation_id) as bar
       from observation
       group by record_id
           , case when true
                  then 'foo'
             end;
record_id | bar
-----------+-----
         1 |   4
         2 |   4
         3 |   2
(3 rows)

And for good measure:

test=# select record_id
       , count(observation_id) as bar
       from observation
       group by case when true
                     then record_id
                end;
ERROR: column "observation.record_id" must appear in the GROUP BY clause or be used in an aggregate function

Michael Glaesemann
grzm seespotcode net



---------------------------(end of broadcast)---------------------------
TIP 1: if posting/reading through Usenet, please send an appropriate
      subscribe-nomail command to [EMAIL PROTECTED] so that your
      message can get through to the mailing list cleanly

Reply via email to