2
私はPostgres 8.4.9を使用しており、クロスタブの動作に問題があります。ここで私のPostgresクロス集計でエラーが発生するのはなぜですか? 'クエリ指定の戻り値タプルには7つのカラムがありますが、クロス集計では6が返されます。
は何を私のデータは次のようになります:CT、これはテーブルから選択される
rowname | bucket | bucket_value
----------------+---------------------+--------------
CL100001 10011 | 1 A01 | 01/01/2001 | 14 16
CL100001 10011 | 1 A01 | 01/01/2001 |
CL100001 10011 | 1 A01 | 01/01/2001 |
CL100001 10011 | 1 A01 | 01/01/2001 | 440 480
CL100001 10011 | 1 A01 | 01/01/2001 | 475 475
CL100002 10021 | 1 B01 | 01/01/2001 | 16 16
CL100002 10021 | 1 B01 | 01/01/2001 |
CL100002 10021 | 1 B01 | 01/01/2001 |
CL100002 10021 | 1 B01 | 01/01/2001 | 440 480
CL100002 10021 | 1 B01 | 01/01/2001 | 475 475
CL100003 10030 | 1 C01 | 01/01/2001 | 14 16
CL100003 10030 | 1 C01 | 01/01/2001 |
CL100003 10030 | 1 C01 | 01/01/2001 |
CL100003 10030 | 1 C01 | 01/01/2001 | 440 440
CL100003 10030 | 1 C01 | 01/01/2001 | 475 475
...
、それはデータを準備するために使用されます。
次に、私のクエリは、私も私ができるようにPostgresのマニュアルを参照して、次の構築を試みた
SELECT gtreport.* FROM crosstab('SELECT
rowname,
bucket,
bucket_value
FROM
ct
ORDER BY
rowname, bucket',
'SELECT DISTINCT
markername
FROM
markers M,
genotypes G,
gsamples S,
guploads U
WHERE
M.markerid=G.markers_id
AND G.gsamples_id=S.id
AND S.guploads_id=U.id
AND (U.ibg_study_id=15 AND U.ibg_project_id is NULL)
ORDER BY
M.markername')
AS gtreport(
labid text,
box_well_run_date text,
HTTLPR text,
Amelo text,
Caspi text,
DAT1 text,
DRD4 text)
のように見えます。 これにより、エラー が生成されます。「クエリ指定の戻りタプルには7つの列がありますが、クロス集計では6が返されます。
困ったことはありますか。誰もが私が間違って何をやったか見ている場合、それははるかに高く評価されるだろう....
--Rick
をあなたの2番目のクエリ( '明確なmarkernameを選択するが...')どのように多くの行を生成しますか? –
は、私たちの2番目のクエリで何が返されているかを明確にする必要があります...あなたはctを作りますが、マーカーは付けません。 2つの異なる値があり、2つの異なる値だけが2番目のクエリから戻ってくることを期待していますか?クロス集計に対する私の好みは、IDフィールドを必要な7つの列のそれぞれに結合するselect文を作成し、クロス集計レポートを作成するためにIDごとに7つの行を作成し、これを他の表に結合して必要です。 – Twelfth
謝罪;ここではどのような2番目のクエリが返すです: markername ------------ 5HTTLPR Amelo Caspi DAT1 DRD4 (5行) – rixter