Oracle行列转换(decode函数)
时间: 2023-07-05 16:32:34 浏览: 49
在Oracle数据库中,可以使用Decode函数来进行行列转换。Decode函数的语法如下:
```
DECODE(expression, search_value1, result1, search_value2, result2, ..., default_result)
```
其中,expression是需要进行转换的列或表达式,search_value1、search_value2等是需要匹配的值,result1、result2等是匹配到对应值时需要返回的结果,default_result是当所有值都不匹配时需要返回的默认结果。
举个例子,假设有如下数据表:
```
ID NAME GENDER
1 Tom M
2 Amy F
3 Jack M
4 Lily F
```
如果想要将该表进行行列转换,将每个人的性别作为列,可以使用以下SQL语句:
```
SELECT NAME,
DECODE(GENDER, 'M', 'Male', 'F', 'Female', 'Unknown') AS GENDER
FROM my_table;
```
运行以上SQL语句后,将得到如下结果:
```
NAME GENDER
Tom Male
Amy Female
Jack Male
Lily Female
```
其中,DECODE函数将GENDER列中的值进行匹配,并返回对应的结果。如果没有匹配到任何值,则返回默认结果Unknown。
相关问题
oracle 行列转换函数
Oracle提供了几种行列转换的函数,包括pivot、unpivot和decode。其中,pivot函数用于将行数据转换为列,unpivot函数用于将列数据转换为行,而decode函数是Oracle内置的条件函数,可用于在查询结果中进行值的转换。
使用pivot函数进行行列转换的语法如下:
```
SELECT *
FROM (SELECT *
FROM table_name
PIVOT (aggregate_function(column_name)
FOR pivot_column_name IN (list_of_values))
);
```
使用unpivot函数进行列行转换的语法如下:
```
SELECT *
FROM (SELECT *
FROM table_name
UNPIVOT (new_column_name FOR aggregate_column_name IN (list_of_columns))
);
```
对于decode函数的使用,例如:
```
SELECT column_name,
decode(column_name, value1, result1, value2, result2, default_result)
FROM table_name;
```
oracle数据库中decode函数
Oracle数据库中的DECODE函数是一种条件表达式,它可以根据给定的条件返回不同的值。DECODE函数的语法如下:
```
DECODE(条件, 值1, 返回值1, 值2, 返回值2, ..., 值n, 返回值n, 缺省值)
```
DECODE函数的工作方式如下:
- 如果条件等于值1,则返回返回值1。
- 如果条件等于值2,则返回返回值2。
- 以此类推,如果条件等于值n,则返回返回值n。
- 如果条件不等于任何值,则返回缺省值(如果指定了缺省值)或NULL。
下面是一个DECODE函数的例子,它将员工的工资等级转换为文字描述:
```sql
SELECT employee_name, DECODE(salary_grade,
1, 'Low',
2, 'Medium',
3, 'High',
'Unknown') AS salary_description
FROM employees;
```
在这个例子中,如果salary_grade等于1,则返回'Low',如果等于2,则返回'Medium',如果等于3,则返回'High',否则返回'Unknown'。