Es scheint, entfernt möglich, dass Sie fragen, wie zu Gruppenanzeige - das heißt, zeigt einen Wert, der identifiziert oder beschreibt eine Gruppe nur in der ersten Zeile dieser Gruppe. In diesem Fall möchten Sie die Fensterfunktion "lag()" verwenden.
Unter der Annahme, Aufbau des Schemas und Daten ist wie folgt:
create table plant (plantId int not null primary key, color text not null);
create table vegetable (vegetableId int not null, plantId int not null,
Feeldesc text not null, primary key (vegetableId, plantId));
insert into plant values (1,'Red'),(2,'Green'),(3,'Purple');
insert into vegetable values (199,1,'Harsh'),(200,1,'Sticky'),
(201,2,'Bitter'),(202,3,'Bland');
Die Ergebnisse, die Sie (Modul Spaltenüberschriften) zeigen mit dieser einfachen Abfrage erhalten werden kann:
select p.plantId, p.color, v.Feeldesc
from plant p left join vegetable v using (plantId)
order by plantId, vegetableId;
Wenn Sie Um die Anzeige der wiederholten Informationen nach der ersten Zeile zu unterdrücken, wird diese Abfrage es tun:
Die Ergebnisse sehen wie folgt aus:
plantid | color | feeldesc
---------+--------+----------
1 | Red | Harsh
| | Sticky
2 | Green | Bitter
3 | Purple | Bland
(4 rows)
ich so etwas wie die oben gerade in dieser Woche zu tun hatte, eine Liste direkt aus psql zu erzeugen, die für den Endverbraucher leicht war, zu lesen; Sonst wäre mir nie in den Sinn gekommen, dass Sie nach dieser Funktionalität fragen könnten. Hoffentlich beantwortet das deine Frage, obwohl ich vielleicht völlig daneben liege.
Für zwei 'rote' Einträge haben Sie verschiedene 'Feeldesc'-Werte, also welchen möchten Sie zurückgeben? – sll
Was würden Sie mit dem obigen Ergebnis passieren? Da 'Red Harsh' und' Red Sticky' gleichermaßen korrekt sind und Sie einen eliminieren möchten, müssen Sie sich für eine Regel entscheiden. –
Nun, welche Reihe willst du vom Gemüsetisch ??? – dotjoe