【发布时间】:2021-10-25 17:48:31
【问题描述】:
我有一个名为 stores 的表,其中包含一个名为 id 的列和一个名为 result 的列。结果列包含一个 jsonb,如下所示: sample
我想在 2 个不同的列中显示 productname 和 dateOfSale。我正在使用以下内容,但数据显示在单列中。
SELECT b.field_value AS productName, count(*) FROM
( SELECT * FROM (SELECT (jsonb_array_elements(result)::jsonb)->>'name' field_name,
(jsonb_array_elements(result)::jsonb)->>'value' field_value,
FROM stores WHERE store_id = '1') a
WHERE a.field_name='$.productname OR a.field_name='$dateofSale') b GROUP BY b.field_value
我是 PostgreSQL 新手。
期望的结果:
| productname | dateofsale |
|---|---|
| DELL MONITOR | 2021 |
| DELL MONITOR | 2020 |
| LOGITECH MOUSE | 2019 |
【问题讨论】:
-
你能告诉我们你想要的结果和你使用的postgres版本吗?
-
@Jeremy 嗨,我使用的是 PostgreSQL 11.5。我用所需的结果编辑了我的问题。谢谢!
-
您的示例数据不是有效的 JSON
-
样本数据最好显示为formatted text,而不是屏幕截图。请参阅here,了解有关如何创建漂亮表格的一些提示。
标签: sql postgresql jsonb