[1] insert into adm_hg_ybqysk_yr
[2] (id_qutr,id_taxp,id_swjg,id_gbhy,id_jyhy,id_zclx,id_zsfs,id_sz,mny_jrk_yr,mny_jrk_lyr)
[3] select @qutrid@,a.id_taxp,a.id_swjg,a.id_gbhy,a.id_jyhy,a.id_zclx,a.id_zsfs,substring(b.id_sm,1,2),
[4] sum(case when b.id_mth = @monthid@ then mny_rk_tyr else 0 end),
[5] sum(case when b.id_mth = @lastymonthid@ then mny_rk_tyr else 0 end)
[6]
[7] from adm_hg_sntqybqy a,aam_sk_nsrsk_ssqz b
[8] where a.id_taxp = b.id_taxp
[9] and a.id_qutr = @qutrid@ and b.id_mth in(@monthid@,@lastymonthid@)
[10] and substring(b.id_sm,1,2) < = '51'
[11] group by @qutrid@,a.id_taxp,a.id_swjg,a.id_gbhy,a.id_jyhy,a.id_zclx,a.id_zsfs,substring(b.id_sm,1,2)
这条sql都干些什么了,注意其中的@qutrid@,@monthid@,@lastmonthid@都是外部传入的时间参数值,有点英文底子的应该能看懂,这里我就不解释了,呵呵^&^,但是请注意了,这几个常量之间是有关系的,我这里还是说下吧。比如传进来的时间是08年1月份,那么这几个参数值分别为
@qutrid@=2008一季度(当然这里可以编个号如20081301便于程序处理),
@monthid@=200801,
@lastmonthid@=200701,很简单吧
一共十二行,还好不是很多哦,他其实就是做了次汇总,然后插到表中。
[1][2][3]行不用介绍,用select的方式只直接insert
[4][5] sum集合函数的汇总语句里面有个case when的条件语句判断
[7][8] a表和b表通过id_taxp字段关联,取得两张表的交集,是不是啊?
[9] 用a表字段的id_qutr和b表的id_mth设置过滤(具体的讲,就是a表中取是当前季度值的记录,b表中取是当前月或是去年同期的记录值)
[10] 再次限定b表的取值范围,这么简单不说也罢
[11] 终于改结束了,这是惯例,用sum()加一些非聚合运算的字段,就必须把这些字段放在group by里,不然会有什么后果,不说你也明白
最后我再来此总结,不要嫌我罗嗦啊。
这个Sql语句的要做到的事情是:取a表的季度值是@qutrid@的记录,取表的月份值是@qutrid@或@lastymonthid@的记录,再来就substring(b.id_sm,1,2) < = '51'过滤更多的记录,剩下的两表记录以id_taxp做了join,可以说经过了四次过滤,接下来再对剩余b表记录做sum(case... when...)的汇总(即当前月的mny_rk_tyr字段值都累加,去年同期的mny_rk_tyr也累加在一起),想想每个季度,它是要做三次这样的汇总的,为什么呢?一个季度有三个月。是不是很简单啊。最后把汇总的记录值插入到目标表,就万事大吉了,我也该洗洗睡了, 2008-3-27 22:16
分享到:
相关推荐
SQL_INSERT_INTO_语句是SQL语言中用于向数据库表中添加新记录的关键命令。它允许用户在已存在的表格中插入一行或多行新的数据。在理解这个语句之前,我们需要了解SQL(Structured Query Language),它是用于管理和...
在这种情况下,`SELECT INTO` 和 `INSERT INTO...SELECT` 语句是常用的工具,可以将数据从一个源转换为插入语句。本文将详细介绍如何使用这些方法,并提供一个实用的小工具——SelectInsertTable,帮助用户更方便地...
动态sql语句基本语法 1 :普通SQL语句可以用Exec执行 eg: Select * from tableName Exec( select * from tableName ) Exec sp_executesql N select * from tableName -- 请注意字符串前一定要加N 2:字段名,...
本教程将介绍SQL SELECT语句的基本概念和用法,帮助你理解和掌握如何在Oracle环境中执行SQL查询。 首先,SQL SELECT语句的主要功能是提取数据库中的特定数据。它可以从一个或多个表中选取列,并按照需求进行组合。...
4. 查询数据:SELECT语句是SQL的核心,可以用来检索满足特定条件的数据。例如,SELECT * FROM table_name WHERE condition用于选择满足条件的行。 5. 更新数据:UPDATE语句用于修改已有记录,配合WHERE子句可以指定...
标题中的"SQL语句_sql语言_SQL语句_sql_SQL开发_wiree7w_"暗示了我们主要探讨的是SQL语句的编写和使用,以及与SQL开发相关的主题。`wiree7w`可能是一个个人ID或者项目代号,这里不做深入解释,重点在于SQL的学习和...
SQL主要由四大语句类型构成:SELECT、INSERT、UPDATE和DELETE。这些语句分别用于查询、插入、修改和删除数据。 1. **SELECT语句**:这是SQL中最常用的语句,用于从数据库中检索数据。可以指定查询的列、表、条件、...
1. **子查询**:子查询是嵌套SQL的核心概念,它是一个独立的查询语句,可以在SELECT、FROM或WHERE子句中作为表达式的一部分使用。子查询可以返回单个值、一行或多行的结果集,这些结果被主查询用来进一步筛选或计算...
LABView实现使用SQL语句操作数据库
这可以是简单的查询,比如SELECT语句,也可以是复杂的操作,如INSERT、UPDATE或DELETE。 5. **查询结果处理**:执行SQL查询后,通常会返回一个结果集。LabVIEW提供了“获取查询结果行”和“获取查询结果列”函数,...
SQL Server 中的动态 SQL 语句是一种灵活的查询方式,它可以根据不同的情况生成不同的 SQL 语句。动态 SQL 语句可以用来实现复杂的业务逻辑,提高查询效率和灵活性。 普通 SQL 语句和动态 SQL 语句的区别 普通 SQL...
3. 子查询:嵌套在其他SQL语句中的查询,可以作为表达式的一部分,提供复杂的数据过滤和计算。 4. 视图(View):虚拟表,基于一个或多个表的查询结果,提供数据的抽象和安全性。 5. 索引(Index):加速数据检索,...
#### 五、简单SELECT语句示例 - **选择所有列**: `SELECT * FROM departments;` - **选择特定列**: `SELECT department_id, location_id FROM departments;` #### 六、编写SQL语句的规范 - **大小写不敏感**: SQL...
SELECT语句是最常用的SQL语句之一,用于从数据库表中检索数据。 - 示例: ```sql SELECT * FROM stock_information WHERE stock_id = str(nid) AND stock_name = 'str_name' OR stock_name LIKE '%findthis%' ...
在IT行业中,编写SQL语句是一项必备技能,但手动编写和调试SQL语句可能会耗费大量时间和精力,尤其在处理复杂查询时。这就是"SQL语句万能生成器"的用途所在。 SQL语句生成器是一种软件工具,它能够帮助开发者自动...