「getList(date)」という関数があります。この関数は、パラメーターに入力された日付からアイテムリスト(複数の列を含む)を返します。
私が電話した場合:
SELECT * FROM getList('12/31/2014');
それはうまくいきます。日付、商品名、価格のリストが返されます。
このようなもの:
date item_description price
-----------------------------------------------
12/31/2014 banana 1
12/31/2014 Apple 2.5
12/31/2014 coconut 3
しかし、検索したい日付のテーブルがもう1つあります。
したがって、そのテーブルからすべての日付を選択し、返された各行について、関数「getList」を呼び出して次のような結果を得る必要があります。
date item_description price
-----------------------------------------------
12/28/2014 banana 0.5
12/28/2014 Apple 1.5
12/28/2014 coconut 2
12/31/2014 banana 1
12/31/2014 Apple 2.5
12/31/2014 coconut 3
私はそれを行う方法を正確に知りません。もちろん、私のデータはフルーツリストではありません。これは、全体を簡単に説明するためだけのものです。
どうもありがとうございました。
LATERAL
参加これを行う正しい方法は、ラテラルクエリ(PostgreSQL 9.3以降)を使用することです。
SELECT d."date", f.item_description, f.price
FROM mydates d,
LATERAL getList(d."date") f;
マニュアル を参照してください。
SELECT
のSRF古いバージョンでは、いくつかの...風変わりな...プロパティ、SELECT
- listでのset-returning関数のサポートを備えたPostgreSQL拡張機能を使用する必要があります。 PostgreSQL 9.2以前をサポートする必要があることがわかっている場合を除いて、これを使用しないでください。
SELECT d."date", (getList(d."date").*
FROM mydates d;
これにより、出力の各列に1回ずつ、getList
関数が複数回評価される可能性があります。