1
我正在從2005年升級到SQL Server 2012,遇到了一個我需要幫助的語法錯誤。語法錯誤實際上是在2000年構建的數據庫中,因此兼容性問題無法在設置中修復。SQL 2005到2012
Select PPB.*,
SUBSTRING(STUFF((select license_id as k --*
FROM LMACatscan..license AS L
WHERE L.archived = 0
AND ((L.ppb_id IN (SELECT ppb_id FROM LMACatscan..ppb WHERE ppb_id = PPB.ppb_id))
OR (L.ppb_id_2 IN (SELECT ppb_id FROM LMACatscan..ppb WHERE ppb_id = PPB.ppb_id)))
FOR XML PATH('')),1,0,''),2,999999)
FROM LMACatscan..ppb AS PPB
WHERE state_code > ''
從2005年的結果是: 從20012你可以看到一個沒有名字列有所有行和值相同,這是問題的所在:與往常一樣,任何幫助表示讚賞!
傳奇!這完美地解決了我的問題。你有沒有想過爲什麼它在2005年工作? – Bmize729
我不是100%確定的,但我相信這是因爲2005年括號內的別名(PPB)沒有看括號內的PPB表,而在2008年是這樣。 例如,如果您已將括號外的表別名重命名爲PPBX,並使用PPBX.ppb_id在括號中運行相同的查詢來替換PPB.ppb_id,那麼它就會起作用。 – ZLK
例如 選擇PPBX *, SUBSTRING(STUFF((選擇license_id爲k - * FROM LMACatscan..license爲L WHERE L.archived = 0 AND((L.ppb_id IN(SELECT ppb_id FROM LMACatscan。 .ppb WHERE ppb_id = PPBX.ppb_id)) OR(L.ppb_id_2 IN(SELECT ppb_id FROM LMACatscan..ppb WHERE ppb_id = PPBX.ppb_id))) FOR XML PATH('')),1,0,'' ),2,999999) FROM LMACatscan..ppb AS PPBX WHERE STATE_CODE>' (這大概也是在2008年的工作,雖然我沒有測試過) – ZLK