DECLARE
TYPE list IS TABLE OF t_stu.subject%TYPE INDEX BY BINARY_INTEGER;
subject_list list;
v_pro_num NUMBER;
sql_str VARCHAR(255);
BEGIN
SELECT COUNT(DISTINCT subject) INTO v_pro_num FROM t_stu;
sql_str := 'SELECT id ';
FOR v_idx in 1..v_pro_num LOOP
IF v_idx = 1 THEN
SELECT DISTINCT subject INTO subject_list(v_idx) FROM t_stu WHERE rownum = 1;
ELSE
SELECT subjectINTO subject_list(v_idx)
FROM (SELECT DISTINCT subject, rownum row_num FROM t_stu WHERE rownum < v_idx + 1)
WHERE row_num = v_idx;
END IF;
sql_str := sql_str || ', SUM(DECODE(subject,''' || subject_list(v_idx) || ''',score,0)) AS ' || subject_list(v_idx);
END LOOP;
sql_str := sql_str || ' FROM t_stu GROUP BY id';
DBMS_OUTPUT.PUT_LINE('sql--->' || sql_str);
EXEC IMMEDIATE sql_str;
END;
原始表结构:
SID SUBJECT SCORE
1 数学 99
1 英语 68
1 法律 79
2 数学 92
2 英语 72
2 法律 96
实现后的:
SID |
数学 |
英语 |
法律 |
1 |
99 |
68 |
79 |
2 |
92 |
72 |
96 |
分享到:
相关推荐
下面我们将通过一个具体的例子来详细探讨如何在 SQL Server 中使用交叉表,以及在实际操作过程中可能会遇到的一些小问题。 #### 1. 创建临时表和插入数据 首先,我们需要创建一个临时表 `#mpsl` 并向其中插入一些...
总的来说,这个例子展示了如何在SQL环境中处理交叉表数据,并计算逐月的增长率。这种技巧对于分析时间序列数据,尤其是财务或人力资源数据非常有用,可以帮助管理者快速了解员工工资的变化趋势,从而做出相应的决策...
这个例子中,`Orders`表和`Customers`表通过`CustomerID`字段联结,返回所有有对应客户的订单。 2. 自然联结(NATURAL JOIN) 自然联结是基于两个表之间共享的列自动进行联结的一种方式。它不需要显式地指定`ON`...
在FROM后面的表中的列表顺序会对SQL执行性能影响,在没有索引及ORACLE没有对表进行统计分析的情况下ORACLE会按表出现的顺序进行链接,由此因为表的顺序不对会产生十分耗服务器资源的数据交叉。(注:如果对表进行...
sql="insert into 目标数据表 select * from 源数据表" (把源数据表的记录添加到目标数据表) (5) 数据记录统计函数: AVG(字段名) 得出一个表格栏平均值 COUNT(*|字段名) 对数据行数的统计或对某一栏有值的数据...
- 自连接:一个表与自身进行连接,常用于比较同一表中的不同行。 - 外连接: - 左外连接:返回左表的所有行及右表与左表匹配的行,右表无匹配行则显示NULL。 - 右外连接:返回右表的所有行及左表与右表匹配的行...
- **自连接**:用于在同一表的不同实例之间进行连接。 - **SQL1999连接语法介绍** - **交叉连接**:返回所有可能的行组合。 - **自然连接**:基于公共列进行连接。 - **ON子句**:用于指定连接条件。 #### 第5章...
此外,还有交叉连接(CROSS JOIN),也称为笛卡尔积,它会返回左表的每一行与右表的每一行的组合,结果集的大小是两个输入表行数的乘积。 在SQL代码示例中,使用临时表`@TA`和`@TB`展示了不同类型的连接。内连接的...
在SQL Server数据库中,链接查询是用于合并两个或更多表中的数据的关键操作。本文将深入探讨内连接、外连接和交叉连接这三种主要的连接类型。 首先,内连接(INNER JOIN)是基于指定条件筛选出两个表中匹配的行。内...
例如,如果有一个`authors`表和一个`publishers`表,内连接可以用来找出居住在同一城市和州的作者和出版商。内连接的SQL语句可能如下所示: ```sql SELECT a.au_fname, a.au_lname, p.pub_name FROM authors AS a ...
根据提供的文档信息,我们...以上是对给定文档中的Oracle SQL知识点进行了详细的总结和解释,涵盖了多表查询的基本语法、统计记录数、左右连接的概念和用法、SQL:1999标准下的交叉连接、组函数和分组统计等方面的内容。
当这个SQL语句多次执行,但`:pin`的值不同时,Oracle会认为这是一个相同的SQL语句,从而只进行一次解析并多次使用同一执行计划。 #### 五、查询顺序选择 在多表联接查询中,查询顺序的选择对性能也有着重要的影响...
自连接是指一个表与自身进行连接,这在需要比较同一表中的不同记录时非常有用。 **示例代码**: ```sql SELECT e1.ename as emp_name, e2.ename as manager_name FROM emp e1, emp e2 WHERE e1.mgr = e2.empno; ```...
当查询ArcInfo coverages, shape文件, INFO表以及dBASE表时,SQL表达式中的字段名必须用双引号扩起。如:“AREA”,如果查询的是个人地理数据库数据,则需要将字段名包含在方括号内,如:[AREA],如果查询的是ArcSDE...
- **选择查询、交叉表查询、参数查询、SQL查询和动作查询**(选项A):Access支持多种类型的查询,包括但不限于选择查询、交叉表查询、参数查询、SQL查询和动作查询。其中,选择查询是最常见的查询类型,用于从一个...
- **详细解释**:在Access数据库中,交叉表查询是一种特殊的查询类型,它将来自同一表或多个表中的行转换成列以显示汇总数据。创建交叉表查询时,需要指定三种类型的字段:行标题(Row Headers)、列标题(Column ...
20. 交叉表查询数据源:交叉表查询可以从数据库文件、表、查询中选择数据源。 21. C 语言程序执行:程序`fun`并没有改变形参`a`、`b`、`c`的实际值,因此主函数中的变量`x`、`y`、`z`的值不变,输出仍为初始值10、...