This is a discussion on merge two rows where value are null within the pgsql Admins forums, part of the PostgreSQL category; --> Hi all, sorry if OT. I have the following using case: Name, Surname , Job, Hobby, Pet, address John, ...
| |||||||
| Register | FAQ | Members List | Calendar | Search | Today's Posts | Mark Forums Read |
| ||||
| Hi all, sorry if OT. I have the following using case: Name, Surname , Job, Hobby, Pet, address John, Smith, NULL, photo, NULL, NULL John, Smith, student, NULL, cat, NULL by using name and surname as selecting key, I want : John, Smith, student, photo, cat, NULL that is I want to substitute the null valus of the LAST row with not-null value of previous one. how can I perform that ? in may installed vesion there aren't function as merge and collect. Thanks in advance GIU -- Email.it, the professional e-mail, gratis per te: http://www.email.it/f Sponsor: Entra in Mondolastminute, centinaia di offerte ti aspettano per le tue vacanze a prezzi lastminute! Clicca qui: http://adv.email.it/cgi-bin/foclick....851&d=20070814 ---------------------------(end of broadcast)--------------------------- TIP 5: don't forget to increase your free space map settings |
| ||||
| On Tue, 14 Aug 2007, giuseppe.derossi@email.it wrote: > Name, Surname , Job, Hobby, Pet, address > John, Smith, NULL, photo, NULL, NULL > John, Smith, student, NULL, cat, NULL > by using name and surname as selecting key, I want : > > John, Smith, student, photo, cat, NULL If you are sure there's no conflict (multiple values) for a (name, surname) key, one simple solution might be (surely not an efficient one) select (select distinct Name from thetable where Name = 'name1' and Surname = 'surname1' where Name is not null), (select distinct Surname from thetable where Name = 'name1' and Surname = 'surname1' where Surname is not null), (select distinct Job from thetable where Name = 'name1' and Surname = 'surname1' where Job is not null), (select distinct Hobby from thetable where Name = 'name1' and Surname = 'surname1' where Hobby is not null), (select distinct Pet from thetable where Name = 'name1' and Surname = 'surname1' where Pet is not null), (select distinct address from thetable where Name = 'name1' and Surname = 'surname1' where address is not null) This will fail if you also have John, Smith, student, NULL, dog, NULL in addition to > John, Smith, student, NULL, cat, NULL You can test for offending rows by: select array_to_string( array( select distinct Pet from thetable where Name = 'name1' and Surname = 'surname1' where Pet is not null),',') and so on... Regards, Ben K. Developer http://benix.tamu.edu ---------------------------(end of broadcast)--------------------------- TIP 5: don't forget to increase your free space map settings |