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

问一个简单的SELECT语句
某个仓库的某个商品的库存如下:
storage_id       ph       storage_num         in_date(最后到货时间)
gs14       456         2         2007-08-01
gs15                 789         4         2007-04-01
gs16       012         2         2007-03-01
gs17       345         -3         2007-05-01
gs2       123         0         2007-01-01


我想得到
storage_id       ph       storage_num         in_date
gs16       012         2         2007-03-01
gs15                 789         4         2007-04-01
gs14       456         2         2007-08-01
gs17       345         -3         2007-05-01
gs2       123         0         2007-01-01
也就是说:storage_num> 0的按“in_date   →   ph   →   storage_num”,而storage_num <=0的则按“storage_num   →   ph   →   in_date”

请问这个SELECT如何写,谢谢。



------解决方案--------------------
To Limpire(昨夜小楼)

我的storage_num不是字符型,而是NUMERIC;in_date是DATETIME

---------------------------
datetime其实是浮点型,和numeric可以隐式互转,不用datediff可以。

我的测试表in_date用varchar(10),例如:2007-12-01
和int不能隐式互转,所以要用datediff。