0
私はjsonb配列上でcross join lateralを実行していますが、配列要素のrow_number(またはその等価物)を取得しようとしています。 row_numberドキュメントを見ると、「パーティションバイ」に加えて「オーダーバイ」を行う必要があることがわかりますが、実際には使用できるソート基準はありません。アレイにはセットオーダーがあります。配列の残りのデータとともにインデックスを取得します。jsonb_array_elementsまたはjsonb_to_recordsetからrow_numberを取得する
クライアントの表は、この
{
"id": "cj49q33oa000",
"email": {
"address": "",
"after": "2016-06-28T12:28:58.016Z",
"error": "Et corporis sed."
},
"name": "Arnold Schinner",
"birthdate": "2016-07-29T05:09:33.693Z",
"status": "paused",
"sex": "f",
"waist": [
{
"completed": "2017-06-23T10:37:37.500Z"
},
{
"planned": "2017-06-23T10:37:37.500Z"
},
{
"planned": "2017-06-23T10:37:37.500Z"
},
{
"planned": "2017-06-23T10:37:37.500Z"
}
]
}
のようなエントリを持つことになりますし、私は
SELECT client->>'id' AS id, waist.planned
FROM clients
CROSS JOIN LATERAL JSONB_TO_RECORDSET(client->'waist') AS waist(planned TIMESTAMP WITH TIME ZONE)
WHERE waist.planned IS NOT NULL
のようなクエリを実行すると思いますが、私はいくつかの方法でwaist.position_in_array
を取得する必要があります。