我有两个表:
甘蔗包裹
FID | Acreage | CODE | DATE_PLANT
128-896 28.6 59 2008-08-01
和
甘蔗包裹更新
FID | Acreage | CODE | DATE_PLANT
128-896 28.6 59 01/04/2013 0h:00:00
129-963 15.8 01 01/09/2011 0h:00:00
PRE-8596 12.3 14 31/10/2015 0h:00:00
我想要所有不在第一个 cp 表中的新记录。
我试过这个,但不起作用
If Not Exists(select * FROM CaneParcelUpdates cpu LEFT JOIN CaneParcel cp ON cpu.FIELD_ID = cp.FIELD_ID)
Begin
INSERT INTO CaneParcel (FIELD_ID,ACREAGE, BSI_CODE,DATE_PLANT)
SELECT FIELD_ID, ACREAGE,BSI_CODE,CONVERT(Date,DATE_PLANT) FROM CaneParcelUpdates;
End
我没有收到任何新记录。
只需这样做:插入CaneParcel
CaneParcel
中不匹配的CaneParcelUpdates
的值。
我修剪了日期字段并抓住了前 10 个字符以摆脱 hh:mm:ss
INSERT INTO CaneParcel (FIELD_ID, ACREAGE, BSI_CODE, DATE_PLANT)
SELECT
FIELD_ID, ACREAGE, BSI_CODE,
CONVERT(Date,substring(DATE_PLANT,4,2) + '/' + left(DATE_PLANT, 2) + '/' + substring(DATE_PLANT,7,4))
FROM
CaneParcelUpdates cpu
WHERE
NOT EXISTS (SELECT 1 FROM CaneParcel p
WHERE cpu.FIELD_ID = cp.FIELD_ID);