友恒通有限公司
from ZY_BRJSK
where jsrq between '20050101' and '2005011024' and ybjszt=2 and jlzt in (0,1,2) group by hzxm
having sum(zje)>10000
不带聚合函数的 HAVING 子句 SELECT hzxm FROM ZY_BRJSK
where jsrq between '20050101' and '2005011024' and ybjszt=2 and jlzt in (0,1,2) GROUP BY hzxm
HAVING hzxm LIKE '张%'
11、order by ?. [ ASC | DESC ]
对结果集排序。ASC 和 DESC 关键字用于指定行是按升序还是按降序排序。使用union时,只能对最后结果排序。
12、union
UNION 运算符使您得以将两个或多个 SELECT 语句的结果组合成一个结果集。使用 UNION 组合的结果集都必须具有相同的结构。而且它们的列数必须相同,并且相应的结果集列的数据类型必须兼容。
UNION 运算符从结果集中删除重复的行。如果使用 ALL 关键字,那么结果中将包含所有行并且将不删除重复的行。
Select hzxm,sum(zje) zje from ZY_BRJSK
where jsrq between '200312101' and '2003121024' and ybjszt=2 and jlzt in (0,1,2) group by hzxm union
Select '合计',sum(zje) from ZY_BRJSK
where jsrq between '200312101' and '2003121024' and ybjszt=2 and jlzt in (0,1,2) order by sum(zje)
二、delete 命令
DELETE 语法的简化形式为: DELETE table_or_view [FROM table_sources ] [WHERE search_condition ]
1、删除全部行
Delete #temp = TRUNCATE TABLE #temp
如果要删除在表中的所有行,则 TRUNCATE TABLE 比 DELETE 快。DELETE 以物理
第 5 页 共 53 页
友恒通有限公司
方式一次删除一行,并在事务日志中记录每个删除的行。TRUNCATE TABLE 则释放所有与表关联的页。因此,TRUNCATE TABLE 比 DELETE 快且需要的事务日志空间更少。
注意drop table 与delete 的区别
2、 在行集上使用delete delete from #temp where …
3、在游标的当前行上使用 DELETE
下例显示在名为 cs_dxmdm 的游标上所做的删除。它只影响当前从游标提取的单行。
DELETE FROM #dxmdm
WHERE CURRENT OF cs_dxmdm
4、据与关联表、子查询上使用delete delete ZY_BRSYK
from ZY_BRSYK a,ZYB_BRYJK b where a.syxh=b.syxh and a.brzt=9
三、update 命令
简单格式:
update table_name set 列=表达式 [FROM table_sources] [WHERE search_condition]
1、 使用简单的update
UPDATE YF_YFZKC SET djsl = 0
2、 把 WHERE 子句和 UPDATE 语句一起使用
UPDATE YF_YFZKC SET jxje=0
Where abs(jxje)>1000000
3、通过 UPDATE 语句使用来自另一个表的信息 update #temp
set ksmc =b.name
from #temp a,YY_KSBMK b where a.ksdm=b.id
第 6 页 共 53 页
友恒通有限公司
4、 在游标的当前行上使用update
update #dxmdm set zje=@zje
WHERE CURRENT OF cs_dxmdm
四、insert命令(表必须存在)
所提供的数据值必须与列的列表匹配。数据值的数目必须与列数相同,每个数据值的数据类型、精度和小数位数也必须与相应的列匹配。 1、使用 INSERT...SELECT 插入多行
insert #mzybtemp (hzxm,pzh,jzks,jzrq,jzcs,zje,ybdm,sjh,zzbz,sfzh,zddm,bjqk) select hzxm,convert(varchar(17),substring(cardno,1,10)),ksdm,
substring(sfrq,1,8),1,zje-zfyje-yhje,ybdm,sjh,substring(zhbz,1,1), substring(sfzh,1,18),zddm,substring(zhbz,2,1) from VW_MZBRJSK a (nolock)
where sfrq between @ksrq and @jssj and ybjszt=2 and ghsfbz in (0,1)
and substring(zhbz,4,1)='0' and substring(zhbz,12,1)='0' and exists(select 1 from YY_YBFLK b (nolock)
where b.ybdm=a.ybdm and b.pzlx=10)
2、 使用 INSERT...Values 插入一行。
如果没有指定列的列表,指定值的顺序必须与表或视图中的列顺序一致。 insert into #temp(syxh,jsxh) values (@syxh,@jsxh)
3、SET IDENTITY_INSERT 表 ON|OFF 允许将显式值插入表的标识列中
如果插入值大于表的当前标识值,则 SQL Server 自动将新插入值作为当前标识值使用。
CREATE TABLE products (id int IDENTITY PRIMARY KEY, product varchar(40)) GO
-- Inserting values into products table.
INSERT INTO products (product) VALUES ('screwdriver') INSERT INTO products (product) VALUES ('hammer') INSERT INTO products (product) VALUES ('saw') INSERT INTO products (product) VALUES ('shovel') GO
--删除第三行 DELETE products
第 7 页 共 53 页
友恒通有限公司
WHERE product = 'saw' GO
-- 试图插入id=3的记录,将报错
INSERT INTO products (id, product) VALUES(3, 'garden shovel') GO
-- SET IDENTITY_INSERT to ON时,能插入id=3的记录. SET IDENTITY_INSERT products ON GO
INSERT INTO products (id, product) VALUES(3, 'garden shovel'). GO
SET IDENTITY_INSERT products OFF GO
第二节 函数 一、聚合函数
SUM、AVG、COUNT、MAX 和 MIN 忽略空值,而 COUNT(*) 不忽略。
1、 count()
COUNT(*) 返回组中项目的数量。它对每行分别进行计数,包括含有空值null的行。
COUNT(ALL expression)=count(expression) 对组中的每一行都计算 expression 并返回非空值的数量。
COUNT(DISTINCT expression) 对组中的每一行都计算 expression 并返回唯一非空值的数量。
select count(*) 总行数,
count(zlf_pt) 有值的行数, count(all zlf_pt) 有值的行数,
count(distinct zlf_pt) 不重复的行数 from YY_KSBMK
总行数 有值的行数 有值的行数 不重复的行数 ----------- ----------- ----------- ----------- 205 61 61 3
2、 sum()
sum(ALL expression)=sum(expression) 对所有的非空的值求和 sum(DISTINCT expression) 返回唯一非空值的和 例:
create table #temp (aa int,bb money) insert #temp values(1,null)
第 8 页 共 53 页
相关推荐: