日期:2014-05-18  浏览次数:20570 次

insert into 中有两个相同的计算,必须写两个?
insert into a (feiyong, feiyong2) values(case when zijin * feilv<5 then 5 else zijin * feilv end,(case when zijin * feilv<5 then 5 else zijin * feilv end)/ 5 )

有两个 case when zijin * feilv<5 then 5 else zijin * feilv end 。可以搞成一个么?

------解决方案--------------------
不能把
------解决方案--------------------
SQL code
        
ALTER TABLE a ALTER COLUMN feiyong2 AS feiyong/5
        
INSERT INTO a( feiyong)
SELECT (CASE WHEN zijin * feilv < 5 THEN 5
               ELSE zijin * feilv
          END )

------解决方案--------------------
二楼的方法很好啊,为啥不这样计算??
------解决方案--------------------
2楼方法好。
另外楼主你values后面应该有select吧。
注意:在SELECT后面如果有列别名,只能在SELECT被使用后才能使用。例如:SELECT C1+C2 AS ABC,ABC+C3 AS EFG就是错误的,因为列别名ABC在前面的步骤中根本没有生成;而SELECT C1+C2 AS ABC FROM TABLE ORDER BY ABC就是正确的,因为这时候列别名ABC已经在前面的步骤中生成,因此ORDER BY 可以使用。