1
複数の行を返すWITHクエリでPERFORMを使用しようとしています。複数行の場合にWITH句を使用して実行する
CREATE OR REPLACE FUNCTION test_function() RETURNS void AS $$
BEGIN
PERFORM (
WITH selection AS (
SELECT id,
ROW_NUMBER() OVER w AS r,
first_value(id) OVER w AS first_value,
nth_value(id, 5) OVER w AS last_value
FROM mytable
WINDOW w AS (PARTITION BY v.ability_id ORDER BY unit_id ASC)
)
create_question(id, 1, 1, 1)
FROM selection
WHERE ability_id IN (
SELECT ability_id
FROM selection
WHERE last_value > 0.5
ORDER BY first_value DESC
)
AND selection.r <= 5
);
END;
$$ LANGUAGE plpgsql;
と私はエラーを取得する:
ERROR: more than one row returned by a subquery used as an expression
postgresのドキュメントは、それが出来ないと言う:
For WITH queries, use PERFORM and then place the query in parentheses. (In this case, the query can only return one row.)
離れ書き込みから、この問題を解決するために何ができますかWithクエリ(ここでの選択と呼ばれる)は2回ですか?
あなたのCTEで 'ability_id'が選択されていません。 – wildplasser
はい、達成しようとしていたものの味を与えるためにクエリを簡略化しました。実際にはそれがあります。 –