以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  请教个MSSQL别名引用的问题  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=41253)

--  作者:jnletao
--  发布时间:2013/10/15 10:22:00
--  请教个MSSQL别名引用的问题
这是我的代码:
Select a.WorkerID,a.WorkerName,(Select sum(ProductPrice) from (Select WorkerID,BagNum,StyleNum,SinglePrice,StyleNum * SinglePrice As ProductPrice,{OrderProductProcess}.ProcessName,{OrderProductProcess}.OrderID From {NoteList} Inner JOIN {OrderProductProcess} ON {OrderProductProcess}.[OrderID] = {NoteList}.[OrderID] And {OrderProductProcess}.[ProcessName] = {NoteList}.[ProcessName]) b where a.WorkerID = b.WorkerID) As 计件工资,(Select sum(OddMoney) from {OddList} d where d.WorkerID = a.WorkerID) As 零活工资,计件工资 + 零活工资 As 员工工资 from {BaseWorker} a


这是简化后的示例代码:
select (a+b) as outC,(c+d) as outB,(outC/outB) as outE
from tabName


前面的outC和outB是自定义的临时字段,但是在同一条句子中要引用这两个值,并产生outE。
在运行中出错:列名\'outC\'无效。
实际上outB也是无效的,只是程序只遇到第一个错就退出了。

请问,这种情况,该如何办?

--  作者:Bin
--  发布时间:2013/10/15 10:48:00
--  
select (a+b) as outC,(c+d) as outB,((a+b) /(c+d)) as outE
from tabName
--  作者:jnletao
--  发布时间:2013/10/15 10:54:00
--  
Bin大哥,我从度娘上搜到这个答案了,可是我的实际语句比我最上方写的代码要还复杂,((a+b) /(c+d))   太麻烦了。
有没有更简单的方法?

--  作者:Bin
--  发布时间:2013/10/15 10:57:00
--  
我也很菜,一直都没搞懂.ACCESS是可以这么用的,不知道为什么MSSQL就是不支持这样写.
--  作者:jnletao
--  发布时间:2013/10/15 11:05:00
--  
以下是引用Bin在2013-10-15 10:57:00的发言:
我也很菜,一直都没搞懂.ACCESS是可以这么用的,不知道为什么MSSQL就是不支持这样写.

图片点击可在新窗口打开查看大哥过谦了,没有您的帮助我们起步会更难!图片点击可在新窗口打开查看!学习MSSQL视图中


--  作者:jspta
--  发布时间:2013/10/15 11:11:00
--  
以下是引用Bin在2013-10-15 10:57:00的发言:
我也很菜,一直都没搞懂.ACCESS是可以这么用的,不知道为什么MSSQL就是不支持这样写.

机制不一样,因为几个列是同步进行的,那个时候还没产生别名,也就无法引用了