Paul Ramsey ha scritto:
I have the following SQL statement, which doesn't work (though I wish it
did): select sum(value * ( plulabel = 'FO' )) from btmm group by gis_tag;
PG quite correctly complains that:
ERROR: There is more than one possible operator '*' for types
'float4' and 'bool' You will have to retype this query using an explicit
cast
However, when I do this:
select sum(value * int( plulabel = 'FO' )) from btmm group by gis_tag;
I still get an error:
ERROR: No such function 'int' with the specified attributes
I can find no function at all to use to cast booleans to what I want,
which is 1 = true, 0 = false (IE, the standard cast for boolean ->
number).
Any advice?
--
__
/
| Paul Ramsey
| Refractions Research
| Email: pramsey@refractions.net
| Phone: (250) 885-0632
\_
create function int(bool) returns int4 as'begin if $1 then RETURN 1; else RETURN 0; end if;end;' language 'plpgsql';CREATEdrop table btmm;
DROP
create table btmm (gis_tga text, value float, plulabel text);
CREATE
insert into btmm values('a',13.2,'FO');
INSERT 190188 1
insert into btmm values('b',1.32,'FO');
INSERT 190189 1
insert into btmm values('c',31.32,'RO');
INSERT 190190 1
select sum(value * int( plulabel = 'FO' )) from btmm group by gis_tga;
sum
----
13.2
1.32
0
(3 rows)
--
- Jose' -
And behold, I tell you these things that ye may learn wisdom; that ye may
learn that when ye are in the service of your fellow beings ye are only
in the service of your God. - Mosiah 2:17 -