2015-09-10 113 views
0

當我將SQL Server數據庫遷移到SQL Server 2012時,我遇到了=*的兼容性問題,並且我說它用於右外連接並使代碼更改如下SQL Server 2012兼容性錯誤= *

​​

,我已經改變了代碼爲

--NEW CODE IN SQL SERVER 2012 
SELECT EMPLOYEE_CODE 'EMPLOYEE CODE', MSKID 'MAERSKID', isNull(FIRST_NAME,'') + ' ' + isNull(SECOND_NAME,'') + ' ' + isNull(THIRD_NAME,'') 'FULL NAME',  
    LM.LOCATION_NAME 'LOCATION', CM.COMPANY_NAME 'COMPANY', DEPT.ACTIVITY_NAME 'DEPARTMENT', 
    LVL.LEVEL_NAME 'LEVEL', CARD_NUMBER 'CARD NO' from 
    smart2uat.dbo.ACTIVITY_MAST DEPT right outer join smart2uat.dbo.EMPLOYEE_MAST EMP on DEPT.ACTIVITY_CODE = EMP.ACTIVITY_CODE , 
    smart2uat.dbo.LEVEL_MAST LVL right outer join EMP on LVL.LEVEL_CODE = EMP.LEVEL_CODE, 
    smart2uat.dbo.LOCATION_MAST LM right outer join EMP on LM.LOCATION_CODE = EMP.LOCATION_CODE , 
    smart2uat.dbo.COMPANY_MAST CM right outer join EMP on CM.COMPANY_CODE = EMP.COMPANY_CODE 

我沒有得到預期的輸出如舊的代碼和新的代碼拋出錯誤。從舊代碼到新代碼的這種轉換是否正確? 在此先感謝

+1

'和新的代碼拋出錯誤。 '哪裏是錯誤信息? – lad2025

+0

@ lad2025..I實際上唐諾這transormation是否正確。和錯誤消息是 - '無效的對象名稱EMP'' – METALHEAD

+1

我覺得你的轉型是不正確。看到我的答案。 – lad2025

回答

1

我認爲你需要EMPLOYEE_MASTLEFT JOIN其餘表的所有記錄。還可以使用CONCAT,而不是+字符串。

SELECT 
    [EMPLOYEE CODE] = EMPLOYEE_CODE 
    ,[MAERSKID]  = MSKID 
    ,[FULL NAME] = CONCAT(FIRST_NAME,' ',SECOND_NAME,' ',THIRD_NAME) 
    ,[LOCATION]  = LM.LOCATION_NAME 
    ,[COMPANY]  = CM.COMPANY_NAME 
    ,[DEPARTMENT] = DEPT.ACTIVITY_NAME 
    ,[LEVEL]  = LVL.LEVEL_NAME 
    ,[CARD NO]  = CARD_NUMBER 
FROM smart2uat.dbo.EMPLOYEE_MAST EMP 
LEFT JOIN smart2uat.dbo.ACTIVITY_MAST DEPT 
    ON DEPT.ACTIVITY_CODE = EMP.ACTIVITY_CODE 
LEFT JOIN smart2uat.dbo.LEVEL_MAST LVL 
    ON LVL.LEVEL_CODE = EMP.LEVEL_CODE 
LEFT JOIN smart2uat.dbo.LOCATION_MAST LM 
    ON LM.LOCATION_CODE = EMP.LOCATION_CODE 
LEFT JOIN smart2uat.dbo.COMPANY_MAST CM 
    ON CM.COMPANY_CODE = EMP.COMPANY_CODE; 
+0

空表記錄在哪個表中?將外部連接從左向右更改爲完整,然後查看是否有幫助? –

+0

@ lad2025嗨夥計....感謝您的response..I我沒有得到確切沒有。的records..old代碼給7000左右,而行新4000個 – METALHEAD

+0

人喜.... @ lad2025 ...非常感謝您response..ur代碼工作蘇佩精....... – METALHEAD

1

擺脫FROM子句中的這些逗號。試試這個,而不是你的FROM子句

from 
    smart2uat.dbo.ACTIVITY_MAST DEPT 
    right outer join smart2uat.dbo.EMPLOYEE_MAST EMP 
     on DEPT.ACTIVITY_CODE = EMP.ACTIVITY_CODE 
    right outer join smart2uat.dbo.LEVEL_MAST LVL 
     on LVL.LEVEL_CODE = EMP.LEVEL_CODE 
    right outer join smart2uat.dbo.LOCATION_MAST LM 
     on LM.LOCATION_CODE = EMP.LOCATION_CODE 
    right outer join smart2uat.dbo.COMPANY_MAST CM 
     on CM.COMPANY_CODE = EMP.COMPANY_CODE 
+0

感謝的人了你回答.... – METALHEAD