SELECT DECODE(PDED_B4_CPF,'N',DED_DESC||'*', DED_DESC) DED_DESC_B4
FROM PAY_DED
----
select (case PDED_B4_CPF when null then DED_DESC+'*' else DED_DESC end) DED_DESC_B4 from PAY_DED

解决方案 »

  1.   

    1.Oracle语句转化MS SQL语句
    Oracle语句:
    SELECT DECODE(PDED_B4_CPF,'N',DED_DESC||'*', DED_DESC) DED_DESC_B4
    FROM PAY_DED
    转化为MS SQL语句 咋写ora的DECODE等同于sqlserver的case..whensqlserver:
    SELECT case PDED_B4_CPF when 'N' then DED_DESC+'*'
           else DED_DESC
           end as DED_DESC_B4
    FROM PAY_DED2.多存储过程连用
    这个有点麻烦,首先在存储过程1查到多个字段,表分为A,B,C,D,E,F,G,H,I
    存储过程2查到多个字段,表分为J,K
    存储过程3查到多个字段,表分为L,M
    存储过程4查到多个字段,表分为N,O
    4个存储过程查到几个具有同性字段(这样说不知道对不对):X_EMP_NO,X_MM,X_YY,这三个字段的值是在4个存储过程中都是一样的
    4个存储过程是为显示一张复杂报表设计的,这4个存储过程要连接合并到一样用怎么办,比如,我要将我在存储过程查到的所有值填充到一个DataSet.xsd设计的一个XML表中,怎么办?这个问题两解:
    1.写第5个存储过程,调用这4个,获取返回值组合之后写到xml
    2.4各过程修改成函数,在select中调用这次个函数,直接写入xml
      

  2.   

    select (case PDED_B4_CPF when 'N' then  DED_DESC+'*' else DED_DESC end) DED_DESC_B4 from PAY_DEDls正确------------------
    decode(条件,值1,翻译值1,值2,翻译值2,...值n,翻译值n,缺省值)该函数的含义如下:
    IF 条件=值1 THEN
        RETURN(翻译值1)
    ELSIF 条件=值2 THEN
        RETURN(翻译值2)
        ......
    ELSIF 条件=值n THEN
        RETURN(翻译值n)ELSE
        RETURN(缺省值)
    END IF
      

  3.   

    to hyrongg(世道变得太快)
    你写的第1个问题的答案不是那样的,'N'不代表Null值啊
      

  4.   

    第一步:
    create table #tbl(name1 nvarchar(20),name1 nvarchar(20))
    ----------------------------------------------------------
    第二步:
    create procedure p1
    as
    begin
      declare @name1 nvarchar(20)
      select @name1=name1 from tbl1  update #tbl set name1=@name1
    endcreate procedure p2
    as
    begin
      declare @name2 nvarchar(20)
      select @name2=name2 from tbl2  update #tbl set name2=@name2
    end
    第三步:
    -----------------------
    exec p1
    exec p2select * from #tbl第四步:
    ----------------------
    drop table #tbl