问题出在: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 )
我没见过能这样用的,你试一下:
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 )