资源描述
常用SELECT语句汇总
一、单表查询
(一)按照条件查询相关记录
Select 字段1,字段2……字段N from 表 where 条件
含义:从表中根据where 条件查询记录,每条记录显示得字段按照字段1、字段2…、字段N得设置显示
注:select语句中得标点符号及运算符必须使用英文半角字符。
例1:从凭证库中查询2004年1月31日得凭证,每条凭证只显示凭证日期、凭证号、科目名称、借方金额、贷方金额、会计月份 6个字段
Select 凭证日期,凭证号,科目名称,借方金额,贷方金额,会计月份 From 凭证库 where 凭证日期=’2004-1-31’
例2:根据业务_个人基本情况表,找出缴存状态为”正常”得记录,查出得记录只显示姓名、身份证号、单位账号及个人账号 4个字段
Select 个人姓名,身份证号,单位账号,个人账号 from 业务_个人基本情况表 where 账户状态=’1’
例3:从科目余额表中查询出2010年借方金额大于50万或2010年借方金额小于10万得记录,每条记录只显示摘要、科目编码、借方金额、贷方金额、年度5个字段
Select摘要,科目编码,借方金额,贷方金额,年度 From 科目余额 where(借方金额>500000 and 年度=2010) or (借方金额<100000 and 年度=2010)
Select top 100 字段1,字段2……字段N from 表 where 条件
含义:从表中根据where 条件查询记录,显示前100条记录,每条记录按照字段1、字段2…、字段N得设置显示
例1:从凭证库中查询2004年1月31日得前100条凭证,每条凭证只显示凭证日期、凭证号、科目名称、借方金额、贷方金额、会计月份 6个字段
Select top 100凭证日期,凭证号,科目名称,借方金额,贷方金额,会计月份 From 凭证库 where 凭证日期=’2004-1-31’
例2:根据业务_个人基本情况表,找出缴存状态为”正常”得前100条记录
Select top 100个人姓名,身份证号,单位账号,个人账号 from 业务_个人基本情况表 where 账户状态=’1’
(二)通配符得使用
*表示将全部得字段内容都显示出来
例1:从业务_电子警察表中筛选出无车号或者车牌号小于3位得记录
Select * from 业务_电子警察 where 车号=’’ or Len(车号)<3
例2:从科目余额表中查询出2002年收入大于50万得记录
Select * from 科目余额 where 借方金额>500000 and 年度=2002
%表示零或多个字符
例1:从凭证库中查询2003年各月得房租收入情况
Select month(凭证日期) as 月份, sum(贷方金额) as 房租金额 from 凭证 where 摘要 like ‘%房租%’ and 年度=2003
例2:从凭证库中查询 2008年包含税得记录
Select * from 凭证库 where摘要 like ‘%税%’ and 年度=2008
_表示任何一个字符
例1:根据科目余额表查询出目编码为10开头得一级科目记录
Select * from 科目余额 where 科目编码 like ‘10_’
例2:根据凭证库查询科目名称长度为4且以银行开始得前100条记录
Select top 100 * into 银行记录表from 凭证库 where 科目名称 like ‘银行_ _’
(三)查询得记录生成新表
select字段1,字段2……字段N into 新表 from 旧表 where 条件
含义:从旧表中按照条件查询相关记录并生成新表
例1:从捐款明细账中查询并生成2005年通过邮寄汇款得捐款名单
Select * into 2005年邮寄捐款表 from 业务_捐款明细表 where 捐款方式=’邮寄’ and year(捐款时间)=2005
例2:根据业务_个人基本情况表,找出缴存状态为”正常”得记录,生成”业务_临时_个人基本情况表”
Select 个人姓名,身份证号,单位账号,个人账号 into业务_临时_个人基本情况表from 业务_个人基本情况表 where 账户状态=’1’
(四)查询出得字段重新命名
select字段1 as 字段11,字段2 as 字段22……字段N as 字段nn from表 where 条件
或者
select字段1 as 字段11,字段2 as 字段22……字段N as 字段nn into 新表 from 旧表 where 条件
例1:从科目余额表中查询出科目编码为4121、4125、4126、4128得记录,并把借方发生额字段重新命名为经费支出情况、贷方发生额命名为经费收入情况
select科目编码,科目名称,借方发生额 as 经费支出情况,贷方发生额 as 经费收入情况,期末余额 from 科目余额 where 科目编码 like ’4121’ or 科目编码 like ‘4125’ or 科目编码 like ‘4128’ or 科目编码 like ‘4126’
例2:从凭证库中查询2003年各月得房租收入情况
Select month(凭证日期) as 月份, sum(贷方金额) as 房租金额 into 2003年房租收入情况表from 凭证库 where 科目编码 like ‘40702’ and 摘要 like ‘%租%’
(五)常用子句
select字段into 新表 from 旧表 where 条件 order by 字段 Asc/Desc
Order by 对查询结果进行排序, ASC升序排序,Desc降序排序
例1:从科目余额表中查询出2002年收入大于50万得记录
Select * from 科目余额 where 借方金额>500000 and 年度=2002 order by 借方金额 asc
例2:分析2008年人员支出构成
Select 科目编码,科目名称,sum(借方金额) as 金额合计 from 凭证库 where 科目编码 like ‘501%’ group by 科目编码 order by sum(借方金额) desc
select字段into 新表 from 旧表 where 条件 Group by 字段
Group by 可以快速而简便地将查询结果按照指定得字段进行分组
例1:把凭证库中得记录按照科目名称分组
Select 科目名称,科目编码,借方金额,贷方金额 from 凭证库 group by 科目名称
例2:从凭证库中查询并2003年各月得房租收入情况
Select month(凭证日期) as 月份, sum(贷方金额) as 房租金额 from 凭证 where 科目编码 like ‘40702’ and 摘要 like ‘%租%’ group by month(凭证日期)
例3:从凭证库中查询科目编码为501开头得记录,并根据不同得科目编码分析借方金额情况
Select 科目编码,科目名称,sum(借方金额) as 金额合计 from 凭证库 where 科目编码 like ‘501%’ group by 科目编码 order by sum(借方金额) desc
select字段into 新表 from 旧表 where 条件 Group by 字段 Having 分组条件
Having语句通常跟在Group by语句后,作为分组后得过滤条件
例1:根据凭证库查询科目名称包含事业得记录,并按照科目名称分组
Select 科目名称,count(*) as 科目数量 from凭证库 group by 科目名称 having 科目名称 like ‘%事业%’
例2:根据业务_缴存种类统计表,统计出单位为所有职工缴存得住房公积金金额都一样得单位账号,生成业务_临时_缴存种类统计表
Select 单位账号 into 业务_临时_缴存种类统计表 from 业务_缴存种类统计表 group by 单位账号 having count (单位金额)=1
(六)常用函数
Year (日期) 返回某个日期得年份
例:从捐款明细账中查询并生成2005年通过邮寄汇款得捐款名单
Select * into 2005年邮寄捐款表 from 业务_捐款明细表 where 捐款方式=’邮寄’ and year(捐款时间)=2005
Month(日期) 返回某个日期得月份
例:从凭证库中查询2003年各月得房租收入情况
Select month(凭证日期) as 月份, sum(贷方金额) as 房租金额 into 2003年房租收入情况表from 凭证库 where 科目编码 like ‘40702’ and 摘要 like ‘%租%’
Sum(数值列名/数值字段名) 返回满足条件得某一数值列中得数值得总与
例1: 统计2008年凭证库借方金额得总发生额
Select sum(借方金额) as 借方金额汇总 from 凭证库 where 年度=2008
例2:根据业务_手续费返还表查询2005年、2006年,不同客户得返还金额合计
Select 客户代码,sum(返还金额) as 返还金额合计 into 业务_手续费返还汇总表 from 业务_手续费返还表 where year(日期)=2005 and year(日期)=2006 group by 客户代码
例3:分析2008年人员支出构成
Select 科目编码,科目名称,sum(借方金额) as 金额合计 from 凭证库 where 科目编码 like ‘501%’ group by 科目编码 order by sum(借方金额) desc
Left(字符串,数值表达式) 字符串左截取函数
例:根据业务_个人缴存明细表,找出2005年缴存状态正常得缴存记录,生成业务_临时_个人缴存明细表
Select 个人账号,所属年月 into 业务_临时_个人缴存明细表 from 业务_个人缴存明细表 where left(所属年月,4)=’2005’ and 缴存类型<>’6’
Count(列名/字段名) 返回满足where条件得记录行数,字段名也可用*代替
例1:统计个人业务表中每年参保人数
Select count(year(所属年度)) as 参保人数, year(所属年度) from 个人业务 where 参保状态=’1’
例2:统计凭证库得记录数
Select count(*) as 总记录数 from凭证库
例3:根据业务_缴存种类统计表,统计出单位为所有职工缴存得住房公积金金额都一样得单位账号,生成业务_临时_缴存种类统计表
Select 单位账号 into 业务_临时_缴存种类统计表 from 业务_缴存种类统计表 group by 单位账号 having count (单位金额)=1
Abs(数值) 绝对值函数
例:按账号汇总全年得支出额
select 账号,户名,sum(abs(发生额)) as 全年支出额 from 业务_存款交易明细表 where 发生额<0 group by 账号
Len(字符串)返回某字符串得长度
例1:根据凭证库查询科目名称长度为4且以银行开始得记录
Select * into 银行记录表from 凭证库 where 科目名称 like ‘银行%’ and Len(科目名称)=4
例2:查询科目余额表一级科目编码得记录
Select * into 一级_科目余额表 from 科目余额 where Len(科目编码)=3
二、多表查询
Select字段1,字段2……字段N from 表1 join 表2 on 表1、字段 <关系运算符> 表2、字段 where 条件
或
Select A、字段1,A、字段2……A、字段N, B、字段1,B、字段2……B、字段N from 表1 as A join 表2 as B on A、字段 <关系运算符> B、字段 where 条件
或
Select A、字段1,A、字段2……A、字段N, B、字段1,B、字段2……B、字段N into 新表 from 表1 as A join 表2 as B on A、字段 <关系运算符> B、字段 where 条件
含义:对两个表中类型相同得字段进行关系运算,查询符合关系运算得记录
例1:查询凭证库与会计科目表中科目编码相同得记录
select 凭证库、科目编码,凭证库、科目名称,会计科目表、科目级别 from 凭证库 join 会计科目表 on 凭证库、科目编码=会计科目表、科目编码
或者
select a、科目编码,a、科目名称,b、科目级别 from 凭证库 as a join 会计科目表 as b on a、科目编码=b、科目编码
例2:将预算执行表与用款计划表关联,生成预算与用款表
Select a、部门,a、项目,a、支付方式,a、累计服从于出,b、期末结余,b、总计 into 预算与用款表 from 预算执行表 as a join 用款计划表 as b on a、部门=b、部门 and a、项目=b、项目 and a、支付方式=b、支出类型
例3:将上线支取表与提取原因表进行关联,形成带有提取原因得公积金提取表
Select a、交易日期,a、单位公积金编号,a、单位名称,a、个人公积金账号,a、姓名,a、提取金额,b、提取原因,a、备注 into 公积金提取表 from 上线支取表 as a join 提取原因表 as b on a、提取原因=b、提取原因代码
例4:未缴费而开户得参保情况
Select a、个人帐号,a、参保人员编号,a、参保人姓名 from 缴费统计表 as a join 个人_业务信息表 as b on a、个人账号=b、id where a、个人账号 is null
三、子查询、嵌套查询
Select * from 表1 where 表1、字段1 in (select 字段2 from 表2 where 条件)
或
Select * from 表1 into 新表where 表1、字段1 not in (select 字段2 from 表2 where 条件)
或
Select * into 新表from (select * from 表1 where 条件)
含义:表2得查询结果作为表1得查询条件。子查询可以让多个查询绑定在一起
例1:查询贷款人出现两次以上得贷款记录
Select 贷款账号,姓名,单位,证件号码,贷款金额,贷款日期,还款日期,贷款合同号 from 业务_个人贷款表 where 证件号码 in (select 证件号码 from业务_个人贷款表 group by 证件号码 having count(证件号码)>1) order by 证件号码 desc
例2:有无银行存款一借一贷且科目编码为102得记录
Select 凭证日期,科目编码,凭证号,摘要,借方金额,贷方金额,源凭证号 from 凭证库 where 源凭证号 in (select 源凭证号 from 凭证库 where left(科目编码,3)=’102’ and 借方金额<>0 and 源凭证号 in (select 源凭证号 from 凭证库 where left(科目编码,3)=’102’ and 贷方金额<>0))
例3:利用科目表消除科目余额表中重复科目得记录,并生成新得余额表
Select * into 新余额表from 余额表 where 科目 not in (select 科目号 from 科目表)
例4:从收费数据库中筛选出化疗收费得记录集,生成化疗收费审计抽样表
Select * into化疗收费审计抽样表 from (select 费用序号,费用名称,病人姓名,费用数量,费用单价,总计金额,审计价格 from 收费数据库 where 费用名称 like ‘%化疗%’) order by 费用名称 desc一、大额现金支付
select * from 凭证库 where left(科目编码, 3) = '101' and 贷方金额 > 1000 and 摘要 not like '%降温%' and 摘要 not like '%工资%' and 摘要 not like '%奖金%' and 摘要 not like '%稿费%' and 摘要 not like '%补%' and 摘要 not like '%津贴%' and 摘要 not like '%劳保%' and 摘要 not like '%福利%' and 摘要 not like '%差费%' and 摘要 not like '%出差%' and 摘要 not like '%差旅费%'
二、超限额留存现金
Select 期初余额 期末余额 From 科目余额
WHERE 科目编码=101
三、招待费超标准列支
1、查询招待费支出
Select sum (贷方金额) From 凭证库
WHERE 摘要 LIKE '%招待费%' OR 摘要 LIKE '%烟%'
2、应列支得招待费
Select sum(借方发生额) *0、02 From 总账
WHERE 科目编码=501
展开阅读全文