I'm wondering if it's possible to have a query construct a column
where the value of the column at each row is taken from another field
in that same row. For example, suppose you have a table like:
create table users (
uid serial,
nickname varchar(20),
realname varchar(30),
prefname int2,
primary key (uid)
);
insert into users (nickname, realname, prefname)
values ('Stevo', 'Steve Sullivan', 1);
insert into users (nickname, realname, prefname)
values ('Johnny Boy', 'John Fisk', 2);
A prefname of 1 means the user prefers their nickname, while 2 means
they prefer their realname.
Is there a query I can perform that would return:
uid | Preferred Name
-----+----------------
1 | Stevo
2 | John Fisk
Or, is it necessary to waste storage by making prefname varchar(30)
and then duplicating the preferred name into the prefname field?
Thanks for any answers.