タイトルのすべてです。postgresのtablefunc crosstab()関数のカテゴリを整数にすることはできますか?
SELECT *
FROM crosstab('...') AS ct(row_name text, category_1 text, category_2 text);
私は2つのテーブル、lab_tests
とlab_tests_results
を持っている:ドキュメントは、このような何かを持っています。 lab_tests_results
の行はすべて、lab_tests
テーブルの主キーIDの整数に関連付けられています。ラボテスト(整数で識別される)が行ヘッダーであり、それぞれの結果がテーブルにあるピボットテーブルを作成しようとしています。私は整数での構文エラーを回避することはできません。
これは現在の設定で可能ですか?私はドキュメンテーションで何かを見逃していますか?または、カテゴリの文字列を作成するために、内部結合を実行する必要がありますか?または、ラボテストのテキスト識別子を使用するようにlab_tests_results
テーブルを変更しますか?
ありがとうございました。とても有難い。
編集:ドミトリーの助けを借りて分かりました。彼はデータのレイアウトを把握していましたが、私はどのような出力が必要なのか不明でした。ピボットテーブルをlab_tests_resultsテーブルのbatch_id番号に基づいて取得しようとしました。基本クエリーとキャストデータ型を解読しなければならなかった。これは以下のようにlab_tests_resultsテーブルからピボットテーブルを提供
SELECT *
FROM crosstab('SELECT lab_tests_results.batch_id, lab_tests.test_name, lab_tests_results.test_result::FLOAT
FROM lab_tests_results, lab_tests
WHERE lab_tests.id=lab_tests_results.lab_test AND (lab_tests.test_name LIKE ''Test Name 1'' OR lab_tests.test_name LIKE ''Test Name 2'')
ORDER BY 1,2'
) AS final_result(batch_id VARCHAR, test_name_1 FLOAT, test_name_2 FLOAT);
:
CREATE TABLE lab_tests (
id INTEGER PRIMARY KEY,
name VARCHAR(500)
);
CREATE TABLE lab_tests_results (
id INTEGER PRIMARY KEY,
lab_tests_id INTEGER REFERENCES lab_tests (id),
result TEXT
);
そして、あなたのデータは、次のようになります。私は理解していれば
batch_id |test_name_1 |test_name_2
---------------------------------------
batch1 | result1 | <null>
batch2 | result2 | result3
おかげでドミトリー。あなたが提供したものからわかったアウトプットを得ました。オリジナルの投稿を編集して表示しています。 – user1644030