sql 语句分析 出现 列名 'Union1012' 无效。的错误

ldbeggar 2008-01-19 04:32:16
select a.Branch_Id,(select Branch_name from sql.ut.dbo.BranchMap where Branch_Id=a.Branch_Id) as Branch_name,(
select sum(convert(float,dhl)) as dhl from (
select Branch_Id,sum(convert(float,ST24)/(convert(float,ST18)+convert(float,ST20))) as dhl from sql.ut.dbo.MelcoTrafficDay20080118 where ST18+ST20<>0
group by Branch_Id
union all
select Branch_Id,sum(convert(float,ST26)/(convert(float,ST20)+convert(float,ST22))) as dhl from sql.ut.dbo.SanyoTrafficDay20080118 where ST20+ST22<>0
group by Branch_Id
) d where Branch_Id=a.Branch_Id
group by Branch_Id
) as dhl
from (
select Branch_Id,sum(convert(float,ST19)) as z1 from sql.ut.dbo.MelcoTrafficDay20080118
group by Branch_Id
union all
select Branch_Id,sum(convert(float,ST21)) as z1 from sql.ut.dbo.SanyoTrafficDay20080118
group by Branch_Id
) a group by Branch_Id
这是我的一个sql 语句,在本地运行远程连接的数据库sql.ut.dbo出现这样的错误

服务器: 消息 207,级别 16,状态 3,行 1
列名 'Union1012' 无效。
服务器: 消息 8180,级别 16,状态 1,行 1
未能准备语句。
但在远程连接的数据库上运行
select a.Branch_Id,(select Branch_name from BranchMap where Branch_Id=a.Branch_Id) as Branch_name,(
select sum(convert(float,dhl)) as dhl from (
select Branch_Id,sum(convert(float,ST24)/(convert(float,ST18)+convert(float,ST20))) as dhl from MelcoTrafficDay20080118 where ST18+ST20<>0
group by Branch_Id
union all
select Branch_Id,sum(convert(float,ST26)/(convert(float,ST20)+convert(float,ST22))) as dhl from SanyoTrafficDay20080118 where ST20+ST22<>0
group by Branch_Id
) d where Branch_Id=a.Branch_Id
group by Branch_Id
) as dhl
from (
select Branch_Id,sum(convert(float,ST19)) as z1 from MelcoTrafficDay20080118
group by Branch_Id
union all
select Branch_Id,sum(convert(float,ST21)) as z1 from SanyoTrafficDay20080118
group by Branch_Id
) a group by Branch_Id
则可以正常运行.

但是在本地运行
select sum(convert(float,dhl)) as dhl from (
select Branch_Id,sum(convert(float,ST24)/(convert(float,ST18)+convert(float,ST20))) as dhl from sql.ut.dbo.MelcoTrafficDay20080118 where ST18+ST20<>0
group by Branch_Id
union all
select Branch_Id,sum(convert(float,ST26)/(convert(float,ST20)+convert(float,ST22))) as dhl from sql.ut.dbo.SanyoTrafficDay20080118 where ST20+ST22<>0
group by Branch_Id
) d


select Branch_Id,sum(convert(float,ST19)) as z1 from sql.ut.dbo.MelcoTrafficDay20080118
group by Branch_Id
union all
select Branch_Id,sum(convert(float,ST21)) as z1 from sql.ut.dbo.SanyoTrafficDay20080118
group by Branch_Id
则是可以运行的.

很是奇怪!谁能给我找出原因是呀!
郁闷!
...全文
161 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
ldbeggar 2008-01-19
  • 打赏
  • 举报
回复
就是单独一个sql页面,运行的.没有Union1012这样的字符串

中国风 2008-01-19
  • 打赏
  • 举报
回复
检查一下,在查询分析器里是否还有其它语句
--查找"Union1012"--字符串
ldbeggar 2008-01-19
  • 打赏
  • 举报
回复
服务器: 消息 207,级别 16,状态 3,行 1
列名 'Union1012' 无效。
服务器: 消息 8180,级别 16,状态 1,行 1
未能准备语句。

没错,就是提示 这个信息
dawugui 2008-01-19
  • 打赏
  • 举报
回复
看了看,没找到相关问题.帮顶.
中国风 2008-01-19
  • 打赏
  • 举报
回复
列名 'Union1012' 无效。
----------
提示与楼主贴出来的不对哦
ldbeggar 2008-01-19
  • 打赏
  • 举报
回复
建了
select sum(convert(float,dhl)) as dhl from (
select Branch_Id,sum(convert(float,ST24)/(convert(float,ST18)+convert(float,ST20))) as dhl from sql.ut.dbo.MelcoTrafficDay20080118 where ST18+ST20 <> 0
group by Branch_Id
union all
select Branch_Id,sum(convert(float,ST26)/(convert(float,ST20)+convert(float,ST22))) as dhl from sql.ut.dbo.SanyoTrafficDay20080118 where ST20+ST22 <> 0
group by Branch_Id
) d


select Branch_Id,sum(convert(float,ST19)) as z1 from sql.ut.dbo.MelcoTrafficDay20080118
group by Branch_Id
union all
select Branch_Id,sum(convert(float,ST21)) as z1 from sql.ut.dbo.SanyoTrafficDay20080118
group by Branch_Id
则是可以运行的.
中国风 2008-01-19
  • 打赏
  • 举报
回复
--本地没有建立链接服务器吧
问题场景: 使用了ibatis的查询功能,点击查询后一直报列名无效的问题,但是将日志中打印出来的sql在pl/sql里面执行没有报错。检查了ibatis的sql管理文件,列名没有写错的情况,参数传递也正确。问题原因: ibatis会自动缓存查询语句的列的映射关系,如果在某个查询里面使用了动态sql,就有可能在查询的时候报列名无效的异常。比如以下SQL