--创建表 CREATE TABLE TEST1( Id int primary key not null, Cd nvarchar(50), Name nvarchar(50), Type nvarchar(50), Num int, flag int ) --插入值 INSERT INTO TEST1 VALUES(1,00001,'AAA','A001',500,0) INSERT INTO TEST1 VALUES(2,00002,'BBB','A001',100,1) INSERT INTO TEST1 VALUES(3,00003,'CCC','B001',800,1) INSERT INTO TEST1 VALUES(4,00004,'DDD','B001',200,0) INSERT INTO TEST1 VALUES(5,00005,'EEE','A001',400,0) INSERT INTO TEST1 VALUES(6,00006,'FFF','A001',600,1) --查询数据 SELECT * FROM TEST1 --CASE语句 计算条件列表并返回多个可能结果表达式之一 SELECT Id,Cd,Name,Type,Num, CASE WHEN FLAG = 1 THEN '有' ELSE '无' END AS FLAG FROM TEST1 --WITH AS语句 --『WITH AS的含义 -- WITH AS短语,也叫做子查询部分(subquery factoring),可以让你做很多事情, -- 定义一个SQL片断,该SQL片断会被整个SQL语句所用到。有的时候,是为了让SQL语句的 -- 可读性更高些,也有可能是在UNION ALL的不同部分,作为提供数据的部分。 -- 特别对于UNION ALL比较有用。因为UNION ALL的每个部分可能相同,但是如果每个 -- 部分都去执行一遍的话,则成本太高,所以可以使用WITH AS短语,则只要执行一遍即可。 -- 如果WITH AS短语所定义的表名被调用两次以上,则优化器会自动将WITH AS短语所获取的 -- 数据放入一个TEMP表里,如果只是被调用一次,则不会。而提示materialize则是强制将 -- WITH AS短语里的数据放入一个全局临时表里。很多查询通过这种方法都可以提高速度。 』 WITH sel1 as ( SELECT * FROM TEST1), sel2 as ( SELECT AVG(Num) AS Num FROM TEST1) SELECT * FROM SEL1 WHERE Num > (select * from sel2) --PARTITION BY 按照某列分割/区分 SELECT Id,Cd,Name,Type,Num, AVG(Num) over (partition by Type) AS AVG_Num FROM TEST1 其中,在http://homepage2.nifty.com/sak/w_sak3/doc/sysbrd/sq_kj01.htm上有有关数据库操作的详细概述。(日文)