У нас есть приведенный ниже SQL, который генерирует отчет из таблиц аудита family_audit и family_address_audit.
(SELECT fam.familyserialno, fam.familyname, addr.housenumber, addr.address1,
COALESCE(fam.operation, addr.operation) op,
COALESCE(fam.username, addr.username) usr,
COALESCE(fam.adddate, addr.adddate) add_date,
(SELECT r.userrolename
FROM userrole_master r, user_master u
WHERE u.loginid=COALESCE(fam.username, addr.username) AND r.userrole_id=u.userrole_id) rolename
FROM family_audit fam
INNER JOIN family_address_audit addr USING(txid, family_id)
WHERE (fam.node_id = 8) AND (fam.familyserialno >=1 and fam.familyserialno <=5)
)
UNION
(SELECT fam.familyserialno, fam.familyname,
addr.housenumber, addr.address1,
COALESCE(fam.operation, addr.operation) op,
COALESCE(fam.username, addr.username) usr,
COALESCE(fam.adddate, addr.adddate) add_date,
(SELECT r.userrolename
FROM userrole_master r, user_master u
WHERE u.loginid=COALESCE(fam.username, addr.username) AND r.userrole_id=u.userrole_id) rolename
FROM family_audit fam
FULL OUTER JOIN family_address_audit addr USING(txid, family_id)
WHERE ((fam.familyserialno IS NULL and addr.family_id in
(select family_id
from family
where familyserialno >=1 and familyserialno <=5 and node_id =8))
OR ((addr.family_id IS NULL) and ((fam.familyserialno >=1 and fam.familyserialno <=5) and fam.node_id=8) ) )
)
ORDER BY add_date DESC;
Типичный вывод "выше" SQL выглядит следующим образом
familyserialno | familyname | housenumber | address1 | op | usr | add_date | rolename
----------------+------------+-------------+------------+----+-------+-------------------------+----------
3 | thirda | | | U | admin | 2010-11-24 15:29:34.312 | admin
| | 34324 | sdfdsfdsf | U | admin | 2010-11-24 15:28:42.314 | admin
3 | third | | | I | admin | 2010-11-24 15:28:34.576 | admin
| | 333 | sdfdsf | U | admin | 2010-11-24 15:18:57.129 | admin
2 | aSecond | | | I | admin | 2010-11-24 14:58:15.477 | admin
1 | anjanFirst | anjanFirst | anjanFirst | I | admin | 2010-11-24 14:12:35.477 | admin
======================
Я хочу сгруппировать вывод по fam.familyserialno.Итак, я изменил приведенный выше SQL, как показано ниже;Однако, это приводит к ошибке (в конце)... ^ СОВЕТ: Например, FROM (SELECT ...) [AS] foo.
Как это исправить? Нам действительно нужно, чтобы все строки были сгруппированы по fam.familyserialno.
Большое спасибо,
PS: Мы используем Postgres 8.4.4.