access中的IIF改成sqlserver的问题???

fleamboy 2005-04-12 11:27:34
access中的下列语句:
SELECT W.ID, W.TreeParent, W.UserCode,w.Unit,w.Unit2,w.Scale, W.Name, W.Sort,
Sum(WS.Number) AS SumNumber,Sum(WS.Total) AS SumTotal ,
iif(SumNumber=0,0,SumTotal/SumNumber) as Price
FROM Ware AS W INNER JOIN WareStock AS WS ON W.ID = WS.WareID
GROUP BY W.ID, W.TreeParent, W.UserCode,w.Unit,w.Unit2,w.Scale, W.Name, W.Sort

我改成SQLserver的语句,但是提示错误,因改如何改啊???
SELECT W.ID, W.TreeParent, W.UserCode,w.Unit,w.Unit2,w.Scale, W.Name, W.Sort,
Sum(WS.Number) SumNumber,Sum(WS.Total) SumTotal ,
(case when SumNumber=0 then 0 else SumTotal/SumNumber end) Price
FROM Ware W INNER JOIN WareStock WS ON W.ID = WS.WareID
GROUP BY W.ID, W.TreeParent, W.UserCode,w.Unit,w.Unit2,w.Scale, W.Name, W.Sort

错误提示:
服务器: 消息 207,级别 16,状态 3,行 1
列名 'SumNumber' 无效。
服务器: 消息 207,级别 16,状态 1,行 1
列名 'SumTotal' 无效。
服务器: 消息 207,级别 16,状态 1,行 1
列名 'SumNumber' 无效。
...全文
143 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
paoluo 2005-04-12
  • 打赏
  • 举报
回复
别名不能直接用。

改为这样试试:

Select *,(case when SumNumber=0 then 0 else SumTotal/SumNumber end) Price from (
SELECT W.ID, W.TreeParent, W.UserCode,w.Unit,w.Unit2,w.Scale, W.Name, W.Sort,
Sum(WS.Number) SumNumber,Sum(WS.Total) SumTotal
FROM Ware W INNER JOIN WareStock WS ON W.ID = WS.WareID
GROUP BY W.ID, W.TreeParent, W.UserCode,w.Unit,w.Unit2,w.Scale, W.Name, W.Sort) A
fleamboy 2005-04-12
  • 打赏
  • 举报
回复
还是一样的提示,好像Sum(WS.Number) SumNumber中同一SQL中不能使用SumNumber这个新的列!
netcoder 2005-04-12
  • 打赏
  • 举报
回复
try:

SELECT W.ID, W.TreeParent, W.UserCode,w.Unit,w.Unit2,w.Scale, W.Name, W.Sort,
Sum(WS.Number) SumNumber,Sum(WS.Total) SumTotal ,
(case SumNumber when 0 then 0 else SumTotal/SumNumber end) Price
FROM Ware W INNER JOIN WareStock WS ON W.ID = WS.WareID
GROUP BY W.ID, W.TreeParent, W.UserCode,w.Unit,w.Unit2,w.Scale, W.Name, W.Sort
---涛声依旧--- 2005-04-12
  • 打赏
  • 举报
回复
用case ... when ...代替 iif

34,587

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧