求SQL文

painAndhappy 2006-07-06 02:59:27
在表tbl中,有id和amount,bmount三个字段
需要的SQL如下面的形式
(下面的SQL文是错误的,会出现字段无效的信息,只是为了表达我的需求才这样写的)
SELECT
id,
amount, --字段1
bmount, --字段2
(amount / 30) AS a30, --字段3
(a30 / 24) AS a24, --字段4
(bmount / 15) AS b15, --字段5
(a24 + b15) AS ab --字段6
FROM tbl

字段4是通过计算字段3得出的,字段5是通过计算字段2得出的,字段6是通过字段4和字段5得出的。
即需要前面的列得出的数据来计算后面列。

当然也可以把前面列的计算式全部代入后面的列中,写成下面的形式。
SELECT
id,
amount,
bmount,
amount / 30,
(amount / 30) / 24,
bmount / 15,
(amount / 30) / 24 + bmount / 15
FROM tbl

这样写虽然是正确的,但实际上因为情况比较复杂,所以会显得很烦琐。
请问有什么好的解决方案吗?
...全文
142 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
painAndhappy 2006-07-07
  • 打赏
  • 举报
回复
TO:ronaldlee(乖乖狼)
就像“fcuandy(要学的东西还很多)”所说的,这样做的话,确实比较复杂,特别在涉及到其他多个表关联的时候。不过还是谢谢你的回答。
fcuandy 2006-07-06
  • 打赏
  • 举报
回复
如果用子查询,那么,列别名确实可以参与运算了。但是,如果:
f2 需要 f1的运算
f3 需要 f2的运算
f4 需要 f3的运算
...

这要嵌套多少层子查询?
ronaldlee 2006-07-06
  • 打赏
  • 举报
回复
select * ,(a24 + b15) AS ab
from(
select *,a30/24 as a24,(bmount/15) AS b15
from(
SELECT id,
amount, --字段1
bmount, --字段2
(amount / 30) AS a30, --字段3
FROM tbl) as a
) as a
cstar16 2006-07-06
  • 打赏
  • 举报
回复
那就分布计算吧
呵呵
painAndhappy 2006-07-06
  • 打赏
  • 举报
回复
TO:fcuandy(要学的东西还很多)
确实是这样,实际的计算规则还要复杂许多。
关键就是想能够把前面的列计算出来的数据,能够再后面的列中重用,而不想再把计算式重写一遍。
fcuandy 2006-07-06
  • 打赏
  • 举报
回复
你的意思是实际上你的要求不是
amount / 30,
(amount / 30) / 24,
bmount / 15,
(amount / 30) / 24 + bmount / 15
这些计算规则,还有其它更为复杂的。
是这样吧。
如果是,老实手写吧,规则不确定,就没取巧的办法。

34,588

社区成员

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

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