同一个交叉表的动态SQL实现
DECLARE
TYPE list IS TABLE OF t_stu.project%TYPE INDEX BY BINARY_INTEGER;
project_list list;
v_pro_num NUMBER;
sql_str VARCHAR(255);
t_stu
SID SUBJECT SCORE
1 数学 99
1 英语 68
1 法律 79
2 数学 92
2 英语 72
2 法律 96
实现======
SID
数学
英语
法律
1
99
68
79
2
92
72
96
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;
&
相关文档:
SQL Server数据库查询速度慢的原因有很多,常见的有以下几种:
1、没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷)
2、I/O吞吐量小,形成了瓶颈效应。
3、没有创建计算列导致查询不优化。
4、内存不足
5、网络速度慢
6、查询出的数据量过大(可以采用多次查询,其他的方法降低数据量)
7、锁或者 ......
在T-sql的写法上有很大的讲究,下面列出常见的要点:首先,DBMS处理查询计划的过程是这样的:
1、查询语句的词法、语法检查
2、将语句提交给DBMS的查询优化器
3、优化器做代数优化和存取路径的优化
4、由预编译模块生成查询规划
5、然后在合适的时间提交给系统处理执行
6、最后将执行结果返回给用户。
其次,看一下S ......
“经过测试我们发现SQL Server 2008当中的备份压缩功能可以1-3倍的压缩比,从而极大的减少备份所需的磁盘空间。”Alexey Yeltsov, 微软系统管理员主管。
微软在全世界共有6万多名员工,在2006年的财政收入超过了500亿美金,与此同时也产生了大量内部数据,公司希望对这些数据进行集中以便提供客户的集成化视图。 ......
下载后解压缩就能直接使用了,但是是中文的,字体显示的不是很好,于是找到了换英文的办法:
由于1.5包含了多语言界面的支持,但是它是通过JVM来辨认系统语言的,所以当你的系统语言为中文的时候,它会使用中文界面。不过它的中文翻译并不完整,加上默认界面字体太小,使用中文会看着非常难受。如果想使用英文界面,需要修 ......