我是做企业信息化工作的,大部分时间做的都是MIS系统,或者号称的ERP系统。
有一个问题困扰我许久,百思不得其解:
关于组织机构变了,历史数据的查询问题?
举个例子:
山东分公司有3家店,河北分公司有5家店,每年都会对两家分公司的营业额对比查询。
---------------------------------------------
山东分公司 河北分公司
2002年营业额
2003年营业额
2004年营业额
2005年营业额
2006年营业额
------------------------------------------------
我以“组织机构表”为入口,进行关联查询,很容易出来要求的数据。
现在问题来了,比如2007年,总公司把河北分公司的一家店调整给了山东分公司,变成了山东分公司有4家店,河北分公司也有4家店,那么这个查询就有版本的问题了。
---------------------------------------------
山东分公司 河北分公司
2002年营业额
2003年营业额
2004年营业额
2005年营业额
2006年营业额
2007年营业额
------------------------------------------------
“组织结构表”中的组织节点已经变了,还以采用原来的查询逻辑,2007年以前的数据肯定与事实不符,那么应该怎么办?
问了好多人,要么没有想过,要么没有答案!
听说SAP等系统肯定解决了此问题,不知道思路是什么?望大家不吝赐教!
有一个问题困扰我许久,百思不得其解:
关于组织机构变了,历史数据的查询问题?
举个例子:
山东分公司有3家店,河北分公司有5家店,每年都会对两家分公司的营业额对比查询。
---------------------------------------------
山东分公司 河北分公司
2002年营业额
2003年营业额
2004年营业额
2005年营业额
2006年营业额
------------------------------------------------
我以“组织机构表”为入口,进行关联查询,很容易出来要求的数据。
现在问题来了,比如2007年,总公司把河北分公司的一家店调整给了山东分公司,变成了山东分公司有4家店,河北分公司也有4家店,那么这个查询就有版本的问题了。
---------------------------------------------
山东分公司 河北分公司
2002年营业额
2003年营业额
2004年营业额
2005年营业额
2006年营业额
2007年营业额
------------------------------------------------
“组织结构表”中的组织节点已经变了,还以采用原来的查询逻辑,2007年以前的数据肯定与事实不符,那么应该怎么办?
问了好多人,要么没有想过,要么没有答案!
听说SAP等系统肯定解决了此问题,不知道思路是什么?望大家不吝赐教!
to:bjt
简单的增加一个年的时间,甚至更精确到日,
都不可避免ckc提到的年中调整的问题(比如调整时间之前的营业额算这家分公司,调整后算另外一家)!这样的话查询逻辑复杂到了不可写了!
把“一些结果保存起来作为统计结果表”,倒是可以考虑一下!看看还有高手有没有解决方案?大家熟悉SAP这些国际软件牛们,是怎么解决的?
http://www.duduwolf.com/wiki/2007/520.html
可以提出一些解决方案来解决你的特定问题,上面也有人提出来了。
最基本的思路就如同二楼说的那样,可以建立一个有开始和结束时间的历史组织机构表。
譬如
TJG
公司 分店 开始日期 结束日期
A A1 20060101 20061231
B A1 20070101 30000101 --这表示无穷远,或者可以用null表示. 有例如有业绩明细表(假设的)
TYJ
分店 日期 业绩
A1 20060101 1000
A1 20070101 200
然后再关联查询即可.
SELECT A.公司,SUM(B.业绩) FROM TJG A,TYJ B WHERE B.分店=a.分店 and (b.日期 between (a.开始日期 and a.结束日期)) group by a.公司
打开是这样了。这样就要求你们修改一下查询,或者通过建立一些视图来减少修改的工作量