2

ビューを array_agg 列に結合する構文を探しています。

意見:

CREATE VIEW sampleview AS
SELECT groupid, array_agg(akey) AS keyarray
FROM sampletable
GROUP BY groupid;

今、私はこのようなことをしたい:

SELECT s.groupid, a.somedata
FROM sampleview AS s
JOIN anothertable AS a ON a.akey IN s.keyarray;

エラーメッセージ:

ERROR:  syntax error at or near "s"
LINE 3: JOIN anothertable AS a ON a.akey IN s.keyarray;

構文が間違っているか (ほとんどの場合)、それが不可能です。これが不可能だとは思いませんが、そうである場合は別のオプションを求めています。

上記の擬似クエリの予想される出力 (テスト コードを使用):

 groupid | somedata 
---------+----------
       1 | foo
       1 | bar
       2 | monkey
(3 rows)

テストコード:

CREATE TABLE sampletable (groupid int not null, akey int not null);
CREATE TABLE anothertable (akey int not null, somedata varchar(20));
CREATE VIEW sampleview AS SELECT groupid, array_agg(akey) AS keyarray FROM sampletable GROUP BY groupid;
INSERT INTO sampletable VALUES(1,20),(1,22),(2,33);
INSERT INTO anothertable VALUES(20, 'foo'),(22,'bar'),(33,'monkey');
4

1 に答える 1