首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

Case的运用解决办法

2012-03-24 
Case的运用有一个表如下,IDInQtynowQtyInDateddj00150502007-01-2400:00:00.000rkz00540402007-01-2500:00

Case的运用
有一个表如下,
ID               InQty         nowQty       InDate
ddj00150502007-01-24   00:00:00.000
rkz00540402007-01-25   00:00:00.000
ddj00280802007-01-26   00:00:00.000
ddj00470702007-01-27   00:00:00.000

我想要得到结果为

ID               InQty         nowQty       InDate                                             mark
ddj00150502007-01-24   00:00:00.000           -
rkz00540402007-01-25   00:00:00.000           -
ddj00280802007-01-26   00:00:00.000           80
ddj00470702007-01-27   00:00:00.000           70

mark的取值为:   当inQty> 60   时为   -,否则为nowQty的值.

我能用union   all得到想要的结果,不知道用case行么?



[解决办法]
--try:
select ID,InQty,nowQty,InDate ,mark=case when inQty> 60 then '- ' else nowQty end from tbl
[解决办法]
declare @a table(ID varchar(10), InQty int, nowQty int, InDate datetime)
insert @A SELECT 'ddj001 ', 50 ,50, '2007-01-24 00:00:00.000 '
UNION ALL SELECT 'rkz005 ', 40, 40 , '2007-01-25 00:00:00.000 '
UNION ALL SELECT 'ddj002 ', 80, 80 , '2007-01-26 00:00:00.000 '
UNION ALL SELECT 'ddj004 ', 70, 70 , '2007-01-27 00:00:00.000 '

SELECT ID,INQTY,NOWQTY,INDATE,CASE WHEN NOWQTY> 60 THEN '- ' ELSE LTRIM(NOWQTY) END MARK FROM @A
[解决办法]
語法問題
[解决办法]
请问这个为什么不可以呢?
select ID,InQty,nowQty,InDate ,mark=case (inQty> 60) when 1 then '- ' else nowQty end from tbl
------

select ID,InQty,nowQty,InDate,mark=(case when inQty> 60 then '- ' else nowQty end) from tbl

热点排行