ORACLE UNPIVOT的列进行group by后count处理
时间: 2024-10-09 16:11:11 浏览: 32
Oracle的UNPIVOT是一种转换操作,它将一个多值属性或列展平成单独的行,以便于在一个GROUP BY查询中按新的列进行聚合。当你有一个包含数据的表格,其中某个字段有多个值需要分别计数,可以使用UNPIVOT来进行这样的操作。
例如,假设你有一个销售记录表(Sales)如下:
```
OrderID | ProductCategory
--------|-----------------
1 | A
1 | B
2 | C
3 | A
3 | D
```
如果你想按产品类别统计每个订单的数量,你可以使用UNPIVOT后进行COUNT:
```sql
SELECT OrderID, Category, COUNT(*) as Count
FROM (
SELECT OrderID,
LTRIM(RTRIM(ProductCategory)) as Category
FROM Sales
UNPIVOT (
Category
FOR Category IN (ProductCategory AS 'Category')
)
) pivoted_table
GROUP BY OrderID, Category;
```
结果会是:
```
OrderID | Category | Count
-------|----------|------
1 | A | 2
1 | B | 1
2 | C | 1
3 | A | 1
3 | D | 1
```
阅读全文