【问题标题】:Query to turn field names/values rows as a single row查询以将字段名称/值行转换为单行
【发布时间】:2013-09-30 14:51:54
【问题描述】:

我正在使用一个允许用户创建自己的字段的系统。这在 Oracle 中实现为字段表,然后是字段/值表。如果我运行这样的查询:

SELECT 
  field_name, field_value
FROM field_t
INNER JOIN field_t ON field_t.id = field_string_t.field_id
WHERE (field_name = 'foo'
  OR field_name = 'bar'
  OR field_name = 'buzz'
)

然后我可以在一系列行中获取字段名称/值对:

id      field_name    field_value
8       foo           1
8       bar           5
8       buzz          4
... and so on for each id

我如何编写查询来返回它:

id      foo      bar      buzz
8       1        5        4  

谢谢。

【问题讨论】:

标签: sql oracle oracle11g


【解决方案1】:

正如 Mark Ba​​nnister 所建议的,您可以使用 PIVOT 函数来做同样的事情

如果您想使用子查询而不是 field_name 的值,请使用 PIVOT XML(请注意,在这种情况下,结果将以 XML 格式)

欲了解更多信息,请查看以下链接

PIVOT and UNPIVOT operators in Oracle 11g

 select * from
 (
 SELECT id, field_name, field_value,field_id
 FROM   field_t)
 PIVOT  (
 MAX(field_value) 
 FOR (field_name) IN ('foo' as foo, 'bar' AS bar, 'buzz' as buzz))
 WHERE id=field_id;

【讨论】:

    猜你喜欢
    • 2022-01-20
    • 1970-01-01
    • 2022-08-17
    • 1970-01-01
    • 1970-01-01
    • 2011-04-16
    • 2016-02-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多