⑴ sqlserver提示超过最大前缀
[DATABASENAME].[SCHEMANAME].[表/过程/函数/视图...]
所以
select [DB1.new].dbo.getDeptNameByName('')
是正确的。
不跨DataBase就没必要加完整前缀,
直接select dbo.getDeptNameByName('')
⑵ sqlserver关于别名的问题
A2,A4为原来的,其余是分类汇总的
作用域的分别主要是知道语句中子查询的执行顺序,如果到了外层查询进行重命名了,那么内层的就没有用了。
⑶ sqlserver2008为列取别名的问题
这是sql在sqlserver中物理查询顺序的问题,看下图
where字句会在select之前执行,那么自然无法知道select中的列别名A到底是什么东西,它只会检查A到底是不是AL_ReturnApply的列名,如果不是那么就会编译出错,关于物理查询顺序,在sql2005(8)技术内幕的书中都有讲到