解决方案 »

  1.   

    问题出在:openquery
    我没见过能这样用的,你试一下:
    select * into #t
    from OPENQUERY(emr, 'select * from emr_view ')INSERT  INTO UNI_PatientInfo
            ( InNum ,
              Patient ,
              InCount ,
              Mdoctor ,
              HUidlist ,
              ZDoctor ,
              Work ,
              profes ,
              SEX ,
              BYear ,
              BMoth ,
              BDay ,
              BirthDay ,
              Nation ,
              address ,
              Marriage ,
              NativePlace ,
              PatientID ,
              InpatientArea ,
              InBedNum ,
              InDate ,
              iNdIAGNOSIS ,
              indepartment ,
              CertificateType ,
              CERTIFICATECODE ,
              LINKMAN ,
              LINKMANPHONE ,
              LINKMANADDRESS ,
              InID
            )
            SELECT  PATIENT_ID AS InNum ,
                    PATIENT AS Patient ,
                    CASE IN_COUNT
                      WHEN '1' THEN '1'
                      WHEN '2' THEN '2'
                      WHEN '3' THEN '3'
                      ELSE '1'
                    END AS InCount ,
                    '' AS Mdoctor ,
                    '' AS HUidlist ,
                    '' AS ZDoctor ,
                    WORK AS Work ,
                    '' AS profes ,
                    SEX AS SEX ,
                    DATEDIFF(year, BIRTHDAY, GETDATE()) AS BYear ,
                    0 AS BMoth ,
                    0 AS BDay ,
                    BIRTHDAY AS BirthDay ,
                    NATION AS Nation ,
                    ADDRESS AS address ,
                    '' AS Marriage ,
                    '中 国' AS NativePlace ,
                    PATIENT_ID + CAST(IN_COUNT AS CHAR(2)) AS PatientID ,
                    '' AS InpatientArea ,
                    '' AS InBedNum ,
                    INDATE AS InDate ,
                    '' AS iNdIAGNOSIS ,
                    '' AS indepartment ,
                    '身份证' AS CertificateType ,
                    CERTIFICATE_CODE AS CERTIFICATECODE ,
                    LINK_MAN AS LINKMAN ,
                    LINK_MAN_PHONE AS LINKMANPHONE ,
                    LINK_MAN_ADDRESS AS LINKMANADDRESS ,
                    PATIENT_ID + CAST(IN_COUNT AS CHAR(2)) AS InID
            FROM    #t a
            WHERE   a.INDATE <> ''
                    AND NOT EXISTS ( SELECT *
                                     FROM   UNI_PatientInfo b
                                     WHERE  b.InNum = a.PATIENT_ID
                                            AND b.InCount = a.IN_COUNT ) 
      

  2.   

    oracle的语句不能直接在sql server中使用的,有些语法规则不一样