--select distinct g.fparent
Select   e.fname , company.fdisplayname_l2,g.fname_l2 ,
case when g.fnumber='1001'then d1.f17 
when g.fnumber='1001'then d1.f17 
when g.fnumber='1002'then d1.f18 
when g.fnumber='1003'then d1.f19 
when g.fnumber='1004'then d1.f20 
when g.fnumber='1005'then d1.f21 
when g.fnumber='1006'then d1.f22 
when g.fnumber='1007'then d1.f23 
when g.fnumber='1008'then d1.f24 
when g.fnumber='1009'then d1.f17 
when g.fnumber='1010'then d1.f18 
when g.fnumber='1011'then d1.f19 
when g.fnumber='1012'then d1.f20 
when g.fnumber='1012'then d1.f21 
when g.fnumber='1013'then d1.f22 
end  as Famount
From T_Csl_ItemData H,
T_Csl_ItemDataEntry D,
T_Csl_ItemDataEntry001 D1,
T_Org_BaseUnit Company,
T_Bd_Currency Cy,
T_Csl_CslReport e,
T_CSL_TempletItemList f,
t_csl_rptitem g
where H.FID=D.FItemDataID 
and D.FID=D1.FID 
and H.FCompanyID=company.Fid 
and H.FCurrencyID=Cy.Fid 
and h.freportid=e.fid
and e.ftemplateid=f.ftemplateid
and f.fitemnumber=g.fnumber
and e.fname ='资产负债表'
--and D.FDataElement=2   --本期发生数 
--and D.FValueType=1    --金额 

解决方案 »

  1.   

    问题出在语句中的CASE语句,其实,CASE中的对应关系有一个表来记录的如下
    1001 货币资金                            F17   资产负债表 
    1002 短期投资                            F18   资产负债表 
    1003 应收票据                            F20   资产负债表 
    1004 应收股利                            F21   资产负债表 
    1005 应收利息                            F22   资产负债表 
    1006 应收帐款                            F23   资产负债表 
    1007 减:坏帐准备                        F24   资产负债表 
    1008 应收帐款净额                        F25   资产负债表 
    如果这个表以后增加一个
    1009 其他应收款                          F26   资产负债表 
    这时我就得手工的更改上面的语句了,请高手指点,如何写这个SQL语句,不使用CASE.应使用什么小弟不明.多谢
      

  2.   

    哈哈,如果g.fnumber的值是固定的,那么就是你上面的写法;如果值不是固定的,那么就要写存储过程动态SQL了 ...可以参考下面这篇帖子,对你应该有帮助的. try it ..http://topic.csdn.net/u/20071225/22/32c53bad-f6f5-47d2-90ea-16c0daa8eefb.html
    Good luck to u!
      

  3.   

    你把 CASE中的对应关系表 也一起查不就行了不就行了不就行了不就行了不就行了不就行了
      

  4.   

    这肯定得用动态SQL,不用的值对应的是不同列,这个设计者可以自动离职了.
      

  5.   

    这肯定得用动态SQL,不同的值对应的是不同列,这个设计者可以自动离职了.
      

  6.   

    假设那个关系对应表是R,列名为col1,col2,col3,col4。
    Select       e.fname   ,   company.fdisplayname_l2,g.fname_l2   , 
    d1.col3 as   Famount 
    From   T_Csl_ItemData   H, 
    T_Csl_ItemDataEntry   D, 
    T_Csl_ItemDataEntry001   D1, 
    T_Org_BaseUnit   Company, 
    T_Bd_Currency   Cy, 
    T_Csl_CslReport   e, 
    T_CSL_TempletItemList   f, 
    t_csl_rptitem   g,
    R
    where d1.col1 = g.fnumber
    ...
      

  7.   


    Select       e.fname   ,   company.fdisplayname_l2,g.fname_l2   , 
    R.col3 as   Famount 
    From   T_Csl_ItemData   H, 
    T_Csl_ItemDataEntry   D, 
    T_Csl_ItemDataEntry001   D1, 
    T_Org_BaseUnit   Company, 
    T_Bd_Currency   Cy, 
    T_Csl_CslReport   e, 
    T_CSL_TempletItemList   f, 
    t_csl_rptitem   g,
    R
    where R.col1 = g.fnumber
    ...