本帖最后由 fanbingyuan 于 2011-12-09 08:57:29 编辑

解决方案 »

  1.   

    楼主存到表变量的@DL1Stage 为什么后面没有用到
      

  2.   

    把各表变量写成cte就可以了
    问题是你有必要一定改称视图吗,效率应该不如存储过程
      

  3.   

    算了,性能和必要性自己考虑,定义不使用自己检查,我把改法帖出来,注意2005以上create view [V_NTPro_NTTZ]
    AS 
    with DL1Stage as 
    (
        select '1' as StageNum,GetMoneyDateStage1 as GetMoneyDate,ALLMoneyBili as BILI,TaskID from  NTCRMInsureOrderDetailsStageH1
        union all
        select '2' as StageNum,GetMoneyDateStage2 as GetMoneyDate,ALLMoneyBili as BILI,TaskID from  NTCRMInsureOrderDetailsStageH1
        union all
        select '3' as StageNum,GetMoneyDateStage3 as GetMoneyDate,ALLMoneyBili as BILI,TaskID from  NTCRMInsureOrderDetailsStageH1
        union all
        select '4' as StageNum,GetMoneyDateStage4 as GetMoneyDate,ALLMoneyBili as BILI,TaskID from  NTCRMInsureOrderDetailsStageH1
    )
    , DL2Stage as
    (
        select '1' as StageNum,GetMoneyDateStage1 as GetMoneyDate,ALLMoneyBili as BILI,TaskID from  NTCRMInsureOrderDetailsStageH2
        union all
        select '2' as StageNum,GetMoneyDateStage2 as GetMoneyDate,ALLMoneyBili as BILI,TaskID from  NTCRMInsureOrderDetailsStageH2
        union all
        select '3' as StageNum,GetMoneyDateStage3 as GetMoneyDate,ALLMoneyBili as BILI,TaskID from  NTCRMInsureOrderDetailsStageH2
        union all
        select '4' as StageNum,GetMoneyDateStage4 as GetMoneyDate,ALLMoneyBili as BILI,TaskID from  NTCRMInsureOrderDetailsStageH2
    )
    ,TYStage as
    (
        select '1' as StageNum,GetMoneyDateStage1 as GetMoneyDate,ALLMoneyBili as BILI,TaskID from  NTCRMInsureOrderDetailsStageH2
        union all
        select '2' as StageNum,GetMoneyDateStage2 as GetMoneyDate,ALLMoneyBili as BILI,TaskID from  NTCRMInsureOrderDetailsStageH2
        union all
        select '3' as StageNum,GetMoneyDateStage3 as GetMoneyDate,ALLMoneyBili as BILI,TaskID from  NTCRMInsureOrderDetailsStageH2
        union all
        select '4' as StageNum,GetMoneyDateStage4 as GetMoneyDate,ALLMoneyBili as BILI,TaskID from  NTCRMInsureOrderDetailsStageH2
    )
    /*总佣金*/
    , WSStage as
    (
        select '1' as StageNum,MoneyStage1 as Money,RMBStage1 as RMB,TaskID from NTCRMInsureOrderDetailsStageA
        union all
        select '2' as StageNum,MoneyStage2 as Money,RMBStage2 as RMB,TaskID from NTCRMInsureOrderDetailsStageA
        union all
        select '3' as StageNum,MoneyStage3 as Money,RMBStage3 as RMB,TaskID from NTCRMInsureOrderDetailsStageA
        union all
        select '4' as StageNum,MoneyStage4 as Money,RMBStage4 as RMB,TaskID from NTCRMInsureOrderDetailsStageA
    )
    /*我司保费*/
    , ZYJStage as
    (
        select '1' as StageNum,MoneyStage1 as Money,RMBStage1 as RMB,TaskID,GetMoneyDateStage1 as GetMoneyStage from NTCRMInsureOrderDetailsStageD
        union all
        select '2' as StageNum,MoneyStage2 as Money,RMBStage2 as RMB,TaskID,GetMoneyDateStage2 as GetMoneyStage from NTCRMInsureOrderDetailsStageD
        union all
        select '3' as StageNum,MoneyStage3 as Money,RMBStage3 as RMB,TaskID,GetMoneyDateStage3 as GetMoneyStage from NTCRMInsureOrderDetailsStageD
        union all
        select '4' as StageNum,MoneyStage4 as Money,RMBStage4 as RMB,TaskID,GetMoneyDateStage3 as GetMoneyStage from NTCRMInsureOrderDetailsStageD
    )
    Select 
    b.City,b.Company,b.ProgramNo,b.CustomerNo,b.CustomerName,b.Target,b.Insurance,'发票号' as FPNO,
    c.StageNum,c.Money as WSMoney,c.RMB as WSRMB,
    d.Money as ZYJMoney,d.RMB as ZYJRMB,d.GetMoneyDate As ZYJDate
    from
    WSStage c left join NTCRMInsureOrderDetails b on b.TaskID = c.TaskID
    left join @ZYJStage d on c.StageNum=d.StageNum and c.TaskID=d.TaskID
    order by c.TaskID,c.StageNumend;
      

  4.   


    CREATE VIEW v_get AS 
    Select 
    b.City,b.Company,b.ProgramNo,b.CustomerNo,b.CustomerName,b.Target,b.Insurance,'发票号' as FPNO,
    c.StageNum,c.Money as WSMoney,c.RMB as WSRMB,
    d.Money as ZYJMoney,d.RMB as ZYJRMB,d.GetMoneyDate As ZYJDate
    from
    (
        select '1' as StageNum,MoneyStage1 as Money,RMBStage1 as RMB,TaskID from NTCRMInsureOrderDetailsStageA
        union all
        select '2' as StageNum,MoneyStage2 as Money,RMBStage2 as RMB,TaskID from NTCRMInsureOrderDetailsStageA
        union all
        select '3' as StageNum,MoneyStage3 as Money,RMBStage3 as RMB,TaskID from NTCRMInsureOrderDetailsStageA
        union all
        select '4' as StageNum,MoneyStage4 as Money,RMBStage4 as RMB,TaskID from NTCRMInsureOrderDetailsStageA
    ) c left join NTCRMInsureOrderDetails b on b.TaskID = c.TaskID
    left join (
        select '1' as StageNum,MoneyStage1 as Money,RMBStage1 as RMB,TaskID,GetMoneyDateStage1 as GetMoneyStage from NTCRMInsureOrderDetailsStageD
        union all
        select '2' as StageNum,MoneyStage2 as Money,RMBStage2 as RMB,TaskID,GetMoneyDateStage2 as GetMoneyStage from NTCRMInsureOrderDetailsStageD
        union all
        select '3' as StageNum,MoneyStage3 as Money,RMBStage3 as RMB,TaskID,GetMoneyDateStage3 as GetMoneyStage from NTCRMInsureOrderDetailsStageD
        union all
        select '4' as StageNum,MoneyStage4 as Money,RMBStage4 as RMB,TaskID,GetMoneyDateStage3 as GetMoneyStage from NTCRMInsureOrderDetailsStageD
    ) d on c.StageNum=d.StageNum and c.TaskID=d.TaskIDorder by c.TaskID,c.StageNum