以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 请教个MSSQL别名引用的问题 (http://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。 |
-- 作者: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就是不支持这样写.
|
-- 作者:jspta -- 发布时间:2013/10/15 11:11:00 -- 以下是引用Bin在2013-10-15 10:57:00的发言:
我也很菜,一直都没搞懂.ACCESS是可以这么用的,不知道为什么MSSQL就是不支持这样写. 机制不一样,因为几个列是同步进行的,那个时候还没产生别名,也就无法引用了 |