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