グループ表示の方法、つまり、グループを識別または説明する値をそのグループの最初の行にのみ表示する方法を尋ねている可能性はほとんどないようです。その場合は、lag() ウィンドウ関数を使用します。
スキーマとデータのセットアップが次のようであると仮定します。
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');
表示する結果 (モジュラスの列見出し) は、次の単純なクエリで取得できます。
select p.plantId, p.color, v.Feeldesc
from plant p left join vegetable v using (plantId)
order by plantId, vegetableId;
最初の行の後に繰り返される情報の表示を抑制したい場合は、次のクエリで実行できます。
select
case when plantId = lag(plantId) over w then null
else plantId end as plantId,
case when p.color = lag(p.color) over w then null
else p.color end as color,
v.Feeldesc
from plant p left join vegetable v using (plantId)
window w as (partition by plantId order by vegetableId);
結果は次のようになります。
plantid | color | feeldesc
---------+--------+----------
1 | Red | Harsh
| | Sticky
2 | Green | Bitter
3 | Purple | Bland
(4 rows)
エンド ユーザーが読みやすいように、psql から直接リストを生成するために、ちょうど今週、上記のようなことをしなければなりませんでした。そうでなければ、あなたがこの機能について質問しているとは思いもしませんでした。私は完全にベースから外れているかもしれませんが、これがあなたの質問に答えてくれることを願っています.