hur.cn - 华软网

 热门搜索

大家帮忙看下 一个小问题请帮下,谢谢

  作者:未知    来源:网络    更新时间:2017/1/11
有两个表 test1,test2
如test1的数据如下:           test2的数据如下:
dept_id    pdsl    kcsl        dept_id    chengb    jine
  13       150     149            13        1000    1500
  13       200     200            13        150     200
  13       200     210            14        200     210
  14       500     510            14        210     240
  14       500     500             
  14       200     210  
......
两个表中 同一个dept_id所对应的行数不一定相同 比如上面所示这样
现在要求在DW的同一行中得出
  dept_id  sum(pdsl)  sum(kcsl) sum(chengb) sum(jine)
      13    550           559      1150       1700
      14    1200          1220      410        450
结果是上面例中所给数据的结果
怎么样做出来这样的DW?
------华软网友回答------
用程序分别计算出表中dept_id各列的值,然后再汇总
用到的函数有:group,sum
不知道有没有更方便的方法。
与你一起关注
------华软网友回复------
先写好SQL语句,然后根据SQL语句创建数据窗口

string error_syntaxfromsql,error_create
string new_sql,new_syntax

new_sql = "SELECT test1.dept_id,sum(pdsl) AS pdsl,sum(kcsl) AS kcsl," &
           + "sum(chengb) AS chengb,sum(jine) AS jine" &
           + "WHERE test1.dept_id = test2.dept_id" &
           + "GROUP BY test1.dept_id"

new_syntax = sqlca.syntaxfromsql(new_sql,"style(type = grid)",error_syntaxfromsql)

if len(error_syntaxfromsql) > 0 then
    messagebox("错误",error_syntaxfromsql)
else
    dw_object.create(new_syntax,error_create) 
    if len(error_create) > 0 then
         messagebox("错误",error_create)
    else 
        dw_object.settransobject(sqlca)
        dw_object.retrieve()
    end if
end if


------华软网友回复------
select dept_id,
       kcs1 = (select sum(pds1) from test1 where test1.dept_id = dept_id),
            .
            .
            .
from test1
group dept_id
union
select dept_id,
       kcs1 = (select sum(chengb) from test2 where test1.dept_id = dept_id),
            .
            .
            .
from test2
group dept_id

       

------华软网友回复------
下面那个改成chengb
------华软网友回复------
按 yuanqi007(从頭来過) 说的那样算的话 test2表中 有几个deptp_id 与test1 表中的相等,算出的结果中就会是应得结果的几倍
zjl_zhang(大海)说的我没有算成功 可能是我太笨了 没看懂
------华软网友回复------
哦,呵呵,理解错了
那把SQL语句换成,在2个表分别统计,然后再连接
------华软网友回复------
怎么样分别统计后连接啊?不要说是用第三张表来存储啊
------华软网友回复------
数据库里做触发器呢,执行SELECT的时候,通过触发器对2个表进行统计,用SELECT直接将2个表的统计结果查询出来      
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。