当前位置: 代码迷 >> Sql Server >> 新手.
  详细解决方案

新手.

热度:31   发布时间:2016-04-24 10:11:01.0
新手求助..
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 

openquery(emr,'select * from emr_view '  ) a


where a.INDATE<>'' 

and not exists (select * from UNI_PatientInfo b where b.InNum=a.PATIENT_ID and b.InCount=a.IN_COUNT ) 



这是从Oracle表导入到sql里的一个语句,最后的a.PATIENT_ID和a.IN_COUNT一直是红的?无法绑定由多个部分组成的标识符?应该怎么改呢?
------解决方案--------------------
问题出在: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 ,
  相关解决方案