Case的运用
有一个表如下,
ID InQty nowQty InDate
ddj001 50 50 2007-01-24 00:00:00.000
rkz005 40 40 2007-01-25 00:00:00.000
ddj002 80 80 2007-01-26 00:00:00.000
ddj004 70 70 2007-01-27 00:00:00.000
我想要得到结果为
ID InQty nowQty InDate mark
ddj001 50 50 2007-01-24 00:00:00.000 -
rkz005 40 40 2007-01-25 00:00:00.000 -
ddj002 80 80 2007-01-26 00:00:00.000 80
ddj004 70 70 2007-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