gpt4 book ai didi

sql - 在 Oracle 中使用聚合旋转/透视表

转载 作者:行者123 更新时间:2023-12-01 11:00:52 27 4
gpt4 key购买 nike

我想在 Oracle 11g 中旋转一个表。枢轴选项需要聚合。
这是我的原始表:

project | attribute | value
===========================
'cust1' | 'foo' | '4'
'cust2' | 'bar' | 'tbd'
'cust3 | 'baz' | '2012-06-07'
'cust1' | 'bar' | 'tdsa'
'cust4' | 'foo' | '22'
'cust4' | 'baz' | '2013-01-01'

旋转后,表格应如下所示:
project | foo | bar | baz
=========================
'cust1' | '4' |'tdba'| NULL
'cust2' | NULL|'tbd' | NULL
'cust3' | NULL| NULL | '2012-06-07'
'cust4' | '22'| NULL | '2013-01-01'

现在,如您所见,分组应该发生在项目列上。不需要折叠或计算任何值。仅需要旋转。
那么,pivot select 是正确的选择吗?

最佳答案

是的,我想是这样。用 MAX 做这样的枢轴很容易总计的:

SELECT
*
FROM
(
SELECT
project,
attribute,
value
FROM
table1
) AS SourceTable
PIVOT
(
MAX(value)
FOR attribute IN ([foo],[bar],[baz])
) AS pvt

否则,您必须在 a max 聚合内执行 case 语句。像这样:
SELECT
MAX(CASE WHEN attribute='foo' THEN value ELSE NULL END) AS foo,
MAX(CASE WHEN attribute='bar' THEN value ELSE NULL END) AS bar,
MAX(CASE WHEN attribute='baz' THEN value ELSE NULL END) AS baz,
project
FROM
table1
GROUP BY
project

这与做 PIVOT 几乎是一样的。 .但我更愿意做 PIVOTCASE WHEN MAX ..

关于sql - 在 Oracle 中使用聚合旋转/透视表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10929108/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com