日期:2014-05-19  浏览次数:20801 次

計算字段如何用SQL語句修改?
例如:
CREATE   TABLE   t2   (a   int,   b   int,   c   int,   x   float,  
      y   AS   CASE   x  
                  WHEN   0   THEN   a  
                  WHEN   1   THEN   b  
                  ELSE   c  
            END)
我要修改y,怎么用SQL語句實現?

--下面是錯的語句
alter   table   t2
alter   column   y   AS   CASE   x  
                  WHEN   0   THEN   b
                  WHEN   1   THEN   a  
                  ELSE   c  
            END


------解决方案--------------------
先删除字段
再增加

------解决方案--------------------
rockyljt(江濤) ( ) 信誉:100 2007-07-31 14:23:32 得分: 0


要求:表中有數據,不能Drop column掉再add


-----------
如果你改變了計算的規則,那麼以前的計算出來的結果就不正確,也沒有保留的必要了吧。

所以刪除了,重新再加,應該沒有關係吧。
------解决方案--------------------
删除增加按新规则生成新值
------解决方案--------------------
可以新一个表,然后再后删除原表


CREATE TABLE t2 (a int, b int, c int, x float(1), y float(1))

INSERT INTO t2 SELECT 1,3,4,7,8
UNION ALL SELECT 2,4,9,3,10
UNION ALL SELECT 11,25,20,0,12
UNION ALL SELECT 3,6,17,1,25
UNION ALL SELECT 22,4,19,13,10
UNION ALL SELECT 15,14,32,0,17
UNION ALL SELECT 22,8,78,0,29
UNION ALL SELECT 47,89,9,23,50
UNION ALL SELECT 52,24,9,1,78


SELECT a , b ,c , x ,
y=CASE x
WHEN 0 THEN a
WHEN 1 THEN b
ELSE c
END
INTO t3 FROM t2


DROP TABLE t2
EXEC SP_RENAME 't3 ', 't2 '
------解决方案--------------------
原來create裡也可以用case,學習了
------解决方案--------------------
路过,学习ing
------解决方案--------------------
不可以,必须先drop然后重建
------解决方案--------------------
OK?
------解决方案--------------------
学习,帮顶..
------解决方案--------------------
学习了,,还能这样建表!