关于某个字段的值是一个公式的运算结果的问题

SuperKick 2005-07-15 11:00:28
问题如下:
有一个表存的是商品的信息,其中一个字段是进口价。现在要实现如下功能:建一个视图,该视图的一个字段叫销售价是根据进口价用一个公式:XSJ = ( ( JKJ * M ) + A ) / S 计算出来的。其中XSJ就是销售价,JKJ是进口价。 M,A,S是三个系数而且会经常变,所以没有办法只能存在一个配置参数表中,表名叫TSConfig,有两个字段:ID,TSConfigValue(其中ID = 1的记录存的就是M,其中ID = 2的记录存的就是A,其中ID = 3的记录存的就是S)。这样的话出现一个问题,如何用SQL实现把 M,A,S从TSConfig中读取出来然后用公式算出销售价?最好直接在视图中实现,先谢了!
...全文
131 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
hsj20041004 2005-07-15
  • 打赏
  • 举报
回复
有一点得保证:就是你的TSConfig表中没有和商品编号有关的信息
也就是语句select TSConfigValue from TSConfig where id=2 查询出来的结果只有一个。
hsj20041004 2005-07-15
  • 打赏
  • 举报
回复
create view V_xsj
as

select XSJ = ( ( JKJ * (select TSConfigValue from TSConfig where id=1) )
+(select TSConfigValue from TSConfig where id=2)) /
(select TSConfigValue from TSConfig where id=3 ) from 商品的信息表
子陌红尘 2005-07-15
  • 打赏
  • 举报
回复
增加对空值NULL的处理:

create view v1 as
select
XSJ = (a.JKJ*isnull(b.M,0)+isnull(b.A,0))/isnull(b.S,1.0)
from
商品信息表 a,
(select
M = max(case ID when 1 then TSConfigValue end),
A = max(case ID when 2 then TSConfigValue end),
S = max(case ID when 3 then TSConfigValue end)
from
TSConfig) b
子陌红尘 2005-07-15
  • 打赏
  • 举报
回复
create view v1 as
select
XSJ = (a.JKJ*b.M+b.A)/b.S
from
商品信息表 a,
(select
M = max(case ID when 1 then TSConfigValue end),
A = max(case ID when 2 then TSConfigValue end),
S = max(case ID when 3 then TSConfigValue end)
from
TSConfig) b

27,582

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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