UPDATE DATA.INTERLINK_TEST.DBO.CUST
SET BIRTHDAY=C.BIRTHDAY
FROM  (SELECT ORGADDR AS MOBILE,CUST_ID,CONVERT(VARCHAR(12),RIGHT(LEFT(SM_CONTENT,12),8),20) AS BIRTHDAY 
FROM TBL_SMRECEIVED AS A,
DATA.INTERLINK_TEST.DBO.SYS_PRSNL AS B,
DATA.INTERLINK_TEST.DBO.CUST AS D,
DATA.INTERLINK_TEST.DBO.SYS_PRSNL_CLSF AS E
WHERE A.ORGADDR=B.MOBILE_NUM
AND E.PRSNL_ID=D.CUST_ID
AND B.PRSNL_ID=D.CUST_ID
AND DATEDIFF(MINUTE, RecvTime, GETDATE()) <= 2600 AND SM_Content LIKE 'XGSR%'
AND E.PRSNL_TYPE='CU'
GROUP BY ORGADDR,CUST_ID,SM_CONTENT) AS C
WHERE C.PRSNL_ID=D.CUST_ID
---------------------------------------------------------------
服务器: 消息 107,级别 16,状态 2,行 1
列前缀 'D' 与查询中所用的表名或别名不匹配。如果弄成这样,最后一句就不对
UPDATE DATA.INTERLINK_TEST.DBO.CUST
SET BIRTHDAY=C.BIRTHDAY
FROM  (SELECT ORGADDR AS MOBILE,PRSNL_ID,CONVERT(VARCHAR(12),RIGHT(LEFT(SM_CONTENT,12),8),20) AS BIRTHDAY 
FROM TBL_SMRECEIVED AS A,DATA.INTERLINK_TEST.DBO.SYS_PRSNL AS B
WHERE A.ORGADDR=B.MOBILE_NUM
AND DATEDIFF(MINUTE, RecvTime, GETDATE()) <= 600 AND SM_Content LIKE 'XGSR%'
GROUP BY ORGADDR,PRSNL_ID,SM_CONTENT) AS C
WHERE C.PRSNL_ID=DATA.INTERLINK_TEST.DBO.CUST.CUST_ID

解决方案 »

  1.   

    UPDATE DATA.INTERLINK_TEST.DBO.CUST
    SET BIRTHDAY=C.BIRTHDAY
    FROM 
    (
    SELECT ORGADDR AS MOBILE,PRSNL_ID,CONVERT(VARCHAR(12),RIGHT(LEFT(SM_CONTENT,12),8),20) AS BIRTHDAY  
    FROM TBL_SMRECEIVED AS A,
    DATA.INTERLINK_TEST.DBO.SYS_PRSNL AS B
    WHERE A.ORGADDR=B.MOBILE_NUM
    AND DATEDIFF(MINUTE, RecvTime, GETDATE()) <= 600 AND SM_Content LIKE 'XGSR%'
    GROUP BY ORGADDR,PRSNL_ID,SM_CONTENT
    ) AS C,DATA.INTERLINK_TEST.DBO.CUST t
    WHERE C.PRSNL_ID= T.CUST_ID这样呢?