D和R是表T_1中的固有列,T是用case when...then...end as T生成的,现在想在where后面对T的范围进行限制一下,我直接写where T>5,是不可以的,我想问一下有没有类似直接点的写法对T进行判断,没有的话应该怎么办呢?
select D,R,
case when (R/D>=1 and R/D<=1.5 and 0.1*D>=12) then 12
when (R/D>=1 and R/D<=1.5 and 0.1*D<3.5) then 3.5
when (R/D>=1 and R/D<=1.5 and 0.1*D>=3.5 and 0.1*D<12) then 0.1*D
when (R/D>1.5 and R/D<2.88 and (0.198-0.04*R/D)*D/1.38>=3.5 and (0.198-0.04*R/D)*D/1.38<12) then (0.198-0.04*R/D)*D/1.38
when (R/D>1.5 and R/D<2.88 and (0.198-0.04*R/D)*D/1.38>=12) then 12
when (R/D>1.5 and R/D<2.88 and (0.198-0.04*R/D)*D/1.38<3.5) then 3.5
when (R/D>=2.88 and 0.06*D>=3.5 and 0.06*D<12) then 0.06*D
when (R/D>=2.88 and 0.06*D<3.5) then 3.5 when (R/D>=2.88 and 0.06*D>=12) then 12 end as T
from T_1
where ...
select D,R,
case when (R/D>=1 and R/D<=1.5 and 0.1*D>=12) then 12
when (R/D>=1 and R/D<=1.5 and 0.1*D<3.5) then 3.5
when (R/D>=1 and R/D<=1.5 and 0.1*D>=3.5 and 0.1*D<12) then 0.1*D
when (R/D>1.5 and R/D<2.88 and (0.198-0.04*R/D)*D/1.38>=3.5 and (0.198-0.04*R/D)*D/1.38<12) then (0.198-0.04*R/D)*D/1.38
when (R/D>1.5 and R/D<2.88 and (0.198-0.04*R/D)*D/1.38>=12) then 12
when (R/D>1.5 and R/D<2.88 and (0.198-0.04*R/D)*D/1.38<3.5) then 3.5
when (R/D>=2.88 and 0.06*D>=3.5 and 0.06*D<12) then 0.06*D
when (R/D>=2.88 and 0.06*D<3.5) then 3.5 when (R/D>=2.88 and 0.06*D>=12) then 12 end as T
from T_1
where ...
解决方案 »
- rxrichedit中的数据保存到数据库,但不能将保存的数据在rxrichedit中显示出来?
- 窗体打印
- 把窗体的Windows State属性设置成wsMaximized后statusbar看不到了是怎么回事?
- Showmodal为何单独建立一个消息循环的问题
- 如何释放用接口定义的实例?
- 求高手 Delphi 代码转 c#
- 悬赏50分 急急急:有谁知道.cnfio是什么文件格式
- 请教一个数据库开发的问题(高分求救,不够再加)只要有实质性的回答都有分
- 使用ADO提示"外部数据库驱动程序错误"是什么意思呀?
- 300分,大家说一说有关测试的方案
- 显示图片的panel移动时闪烁,求解
- 如果将结构体类型转成字符串
select A.* from
(
--你原先的语句
)A
where A.T>5
其他好像没办法吧
如:when (R/D>=1 and R/D<=1.5 and 0.1*D>=12) then 12
放到where中:or (R/D>=1 and R/D<=1.5 and 0.1*D>=12)
如:when (R/D>=1 and R/D<=1.5 and 0.1*D>=3.5 and 0.1*D<12) then 0.1*D
放到where中:or((R/D>=1 and R/D<=1.5 and 0.1*D>=3.5 and 0.1*D<12) and (0.1*D>5))