crosstab()
を使用する 追加のモジュールtablefuncから。
特定の難しさ これは、「行名」が2つの列で構成されていることです。クエリの目的で連結し、最後に連結された列を表示しません。
fn
と仮定します およびln
NOT NULL
です 。未テスト:
SELECT fn, ln, cat1, cat2
FROM crosstab(
'SELECT fn || ln AS row_name, fn, ln, file_type, attribute
FROM t
ORDER BY fn, ln, file_type'
,$$VALUES ('cat1'::text), ('cat2')$$)
AS t (row_name text, fn text, ln int, cat1 text, cat2 text);
もう1つのオプションは、dense_rank()
のようなウィンドウ関数を使用して代理の「行名」を追加することです。 定義する2つの列を「追加の列」として扱います。例:
- 複数の「行名」列を持つPostgresqlクロス集計クエリ
基本:
- PostgreSQLクロス集計クエリ