sql - 旋转多个属性并将它们分组为“单个”属性(多对一)
问题描述
所以我有一个名为 Value 的表,它与不同的“字段”相关联。请注意,其中一些字段具有相似的“名称”,但名称不同。最终,我希望这些“相似名称”在结果集中被旋转/分组为相同的字段名称
VALUE_ID VALUE_TX FIELD_NAME Version_ID
1 Yes Adult 1
2 18 Age 1
3 Black Eye Color 1
4 Yes Is_Adult 2
5 25 Years_old 2
6 Brown Color_of_Eyes 2
我有一个名为 Submitted 的表,如下所示:
Version_ID Version_Name
1 TEST_RUN
2 REAL_RUN
我需要一个看起来像这样的结果集:
Submitted_Name Adult? Age Eye_Color
TEST_RUN Yes 18 Black
REAL_RUN Yes 25 Brown
我尝试了以下方法:
SELECT * FROM (
select value_Tx, field_name, version_id
from VALUE
)
PIVOT (max (value_tx) for field_name in (('Adult', 'Is_Adult') as 'Adult?', ('Age', 'Years_old') as 'Age', ('Eye Color', 'Color_of_Eyes') as 'Eye_Color')
);
我究竟做错了什么?如果我需要添加任何其他详细信息/数据,请告诉我。
提前致谢!
我收到的错误消息如下:
ORA-00907: missing right parenthesis
解决方案
我会更改子查询中的字段名称:
SELECT *
FROM (select value_Tx,
(case when field_name in ('Adult', 'Is_Adult') then 'Adult?'
field_name in ('Age', 'Years_old') then 'Age'
field_name in ('Eye Color', 'Color_of_Eyes') then 'Eye_Color'
else field_name
end) as field_name, version_id
from VALUE
)
PIVOT (max(value_tx) for field_name in ('Adult?', 'Age', 'Eye_Color'));
推荐阅读
- php - DialogFlow V2 API - Webhook 响应为空
- python - 我可以制作一个列表理解,在 for 循环之后附加一个值吗
- mongodb - 即使在创建正确的索引后,MongoDB 也会扫描大量文档
- javascript - 有没有办法简化这个两行表达式?(解构和重组)
- elasticsearch - 使用路由对别名进行 Elasticseach 过滤搜索
- javascript - Firebase Firestore:如何通过使用 async/await 从快照中获取 ref
- ruby-on-rails - 检查关联记录的空值
- angular - 使用自定义 tslint 规则导致找不到实现
- sql - 为什么在数据库查询中求和给出 NULL
- matlab - matlab中没有运行的函数