`

一句简单的insert_select的Sql语句让我罗嗦了半天

SQL 
阅读更多
[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_INSERT_INTO_语句是SQL语言中用于向数据库表中添加新记录的关键命令。它允许用户在已存在的表格中插入一行或多行新的数据。在理解这个语句之前,我们需要了解SQL(Structured Query Language),它是用于管理和...

    SQL SERVER 将select数据生成insert语句

    在这种情况下,`SELECT INTO` 和 `INSERT INTO...SELECT` 语句是常用的工具,可以将数据从一个源转换为插入语句。本文将详细介绍如何使用这些方法,并提供一个实用的小工具——SelectInsertTable,帮助用户更方便地...

    sql.rar_exec select_select_sql select from exec_普通sql大全

    动态sql语句基本语法 1 :普通SQL语句可以用Exec执行 eg: Select * from tableName Exec( select * from tableName ) Exec sp_executesql N select * from tableName -- 请注意字符串前一定要加N 2:字段名,...

    ORACLE__SQL语句教学

    本教程将介绍SQL SELECT语句的基本概念和用法,帮助你理解和掌握如何在Oracle环境中执行SQL查询。 首先,SQL SELECT语句的主要功能是提取数据库中的特定数据。它可以从一个或多个表中选取列,并按照需求进行组合。...

    SQL.rar_SQL 语句 教程_sql_sql 教程 _sql 语句_sql语法

    4. 查询数据:SELECT语句是SQL的核心,可以用来检索满足特定条件的数据。例如,SELECT * FROM table_name WHERE condition用于选择满足条件的行。 5. 更新数据:UPDATE语句用于修改已有记录,配合WHERE子句可以指定...

    SQL语句_sql语言_SQL语句_sql_SQL开发_wiree7w_

    标题中的"SQL语句_sql语言_SQL语句_sql_SQL开发_wiree7w_"暗示了我们主要探讨的是SQL语句的编写和使用,以及与SQL开发相关的主题。`wiree7w`可能是一个个人ID或者项目代号,这里不做深入解释,重点在于SQL的学习和...

    SQL.rar_经典SQL语句大全

    SQL主要由四大语句类型构成:SELECT、INSERT、UPDATE和DELETE。这些语句分别用于查询、插入、修改和删除数据。 1. **SELECT语句**:这是SQL中最常用的语句,用于从数据库中检索数据。可以指定查询的列、表、条件、...

    SQL语句嵌套的实例.rar_SQL语句_sql 语句_sql嵌套

    1. **子查询**:子查询是嵌套SQL的核心概念,它是一个独立的查询语句,可以在SELECT、FROM或WHERE子句中作为表达式的一部分使用。子查询可以返回单个值、一行或多行的结果集,这些结果被主查询用来进一步筛选或计算...

    select by condition.rar_LABVIEW SQL语句_LabVIEW SQL_labview_labvie

    LABView实现使用SQL语句操作数据库

    sql_database_query.rar_LABVIEW SQL语句_LABVIEW的database_LabVIEW S

    这可以是简单的查询,比如SELECT语句,也可以是复杂的操作,如INSERT、UPDATE或DELETE。 5. **查询结果处理**:执行SQL查询后,通常会返回一个结果集。LabVIEW提供了“获取查询结果行”和“获取查询结果列”函数,...

    SQLServer动态SQL语句的用法

    SQL Server 中的动态 SQL 语句是一种灵活的查询方式,它可以根据不同的情况生成不同的 SQL 语句。动态 SQL 语句可以用来实现复杂的业务逻辑,提高查询效率和灵活性。 普通 SQL 语句和动态 SQL 语句的区别 普通 SQL...

    SQL.zip_sql_sql 语句_sql语言

    3. 子查询:嵌套在其他SQL语句中的查询,可以作为表达式的一部分,提供复杂的数据过滤和计算。 4. 视图(View):虚拟表,基于一个或多个表的查询结果,提供数据的抽象和安全性。 5. 索引(Index):加速数据检索,...

    ORACLE__SQL语句教学(oracale-sql)

    #### 五、简单SELECT语句示例 - **选择所有列**: `SELECT * FROM departments;` - **选择特定列**: `SELECT department_id, location_id FROM departments;` #### 六、编写SQL语句的规范 - **大小写不敏感**: SQL...

    数据库知识__SQL语句大全___笔试能用的

    SELECT语句是最常用的SQL语句之一,用于从数据库表中检索数据。 - 示例: ```sql SELECT * FROM stock_information WHERE stock_id = str(nid) AND stock_name = 'str_name' OR stock_name LIKE '%findthis%' ...

    sql语句万能生成器,sql语句,sql语句生成

    在IT行业中,编写SQL语句是一项必备技能,但手动编写和调试SQL语句可能会耗费大量时间和精力,尤其在处理复杂查询时。这就是"SQL语句万能生成器"的用途所在。 SQL语句生成器是一种软件工具,它能够帮助开发者自动...

Global site tag (gtag.js) - Google Analytics