Chinaunix首页 | 论坛 | 博客
  • 博客访问: 140902
  • 博文数量: 56
  • 博客积分: 245
  • 博客等级: 二等列兵
  • 技术积分: 520
  • 用 户 组: 普通用户
  • 注册时间: 2012-10-08 14:43
个人简介

慢慢来

文章分类

全部博文(56)

文章存档

2017年(5)

2016年(2)

2015年(6)

2014年(28)

2013年(5)

2012年(10)

我的朋友

分类: 数据库开发技术

2014-03-28 17:58:35


先介绍表结构 (table schema):

changeset_history:
Column name        Type          Null Table                Num
changeset_id         id_TY         No   changeset_history    1
username             sysname       No   changeset_history    2
applname             sysname       No   changeset_history    3
comment              long_descr_TY Yes  changeset_history    4
create_zdt           datetime      No   changeset_history    5
change_zdt           datetime      No   changeset_history    6
status               char(1   )    No   changeset_history    7


change_hist:
Column name     Type          Null Table                Num
change_id            bigint        No   change_hist          1
changeset_id         id_TY         No   change_hist          2
table_id             smallint      No   change_hist          3
key_id               binary(20  )  No   change_hist          4
change_cd            char(1   )    No   change_hist          5
create_zdt           datetime      No   change_hist          6
change_zdt           datetime      No   change_hist          7
keys                 varchar(1024) No   change_hist          8


change_new_hist / change_old_hist:
Column name        Type          Null Table                Num
change_id            ubigint       No   change_old_hist      1
column_id            smallint      No   change_old_hist      2
value                varchar(1934) Yes  change_old_hist      3
t_value              text          Yes  change_old_hist      4
u_value              univarchar    Yes  change_old_hist      5
change_zdt           datetime      No   change_old_hist      6


一个changeset(_id) 对应多个change(_id), 一个change可以有多个change_new/old

想查询一个changeset_id的每个状态(open,close,export)的时间和这个changeset 有多少个change以及每个change有多少个change_new/old


点击(此处)折叠或打开

  1. create view cs_hist_each_status_my
  2. as
  3. select t1.changeset_id
  4. , t1.username
  5. , t1.applname
  6. , t1.create_zdt as create_zdt
  7. , t2.change_zdt as close_zdt
  8. , t3.change_zdt as export_zdt
  9. , t4.cg_amount
  10. , case when t5.cg_new_amount is null then 0 else t5.cg_new_amount end as cg_new_amount
  11. , case when t6.cg_old_amount is null then 0 else t6.cg_old_amount end as
  12. cg_old_amount
  13. from changeset_history t1
  14. inner join changeset_history t2
  15.     on t1.changeset_id = t2.changeset_id
  16. inner join changeset_history t3
  17.     on t1.changeset_id = t3.changeset_id
  18. left join (select changeset_id, count(change_id) cg_amount from change_hist group by changeset_id) t4
  19.     on t1.changeset_id = t4.changeset_id
  20. left join (select changeset_id, count(n2.change_id) cg_new_amount from change_hist n1, change_new_hist n2 where n1.change_id = n2.change_id group by changeset_id) t5
  21.     on t1.changeset_id = t5.changeset_id
  22. left join (select changeset_id, count(o2.change_id) cg_old_amount from change_hist o1, change_old_hist o2 where o1.change_id = o2.change_id group by changeset_id) t6
  23.     on t1.changeset_id = t6.changeset_id
  24. where t1.status = 'O'
  25. and t2.status = 'C'
  26. and t3.status = 'X'

Show Results:

点击(此处)折叠或打开

  1. [246] HXHALODB1.halo_govcorp.1> top1 cs_hist_each_status_my
  2. changeset_id: 0x00040003588610c9
  3. username: myang
  4. applname: execSQL
  5. create_zdt: Mar 28 2014 6:17AM
  6. close_zdt: Mar 28 2014 6:17AM
  7. export_zdt: Mar 28 2014 6:22AM
  8. cg_amount: 2
  9. cg_new_amount: 2
  10. cg_old_amount: 2

  11. (1 row affected)



阅读(548) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~