神仙问我的题,做出来了,给野蛮人试试。
Declare @tb Table (col1 varchar(5))
insert @tb values( 'a ')
insert @tb values( 'b ')
insert @tb values( 'c ')
insert @tb values( 'c ')
insert @tb values( 'd ')
/*要得到这种结果,但不能用 Case When,写另一语句*/
Select *,(case when col1 = 'c ' then '9 ' else '8 ' end) from @tb
/*另外:啥时喝酒啊? */
------解决方案--------------------可以加中间表吗?
Declare @tb Table (col1 varchar(5))
insert @tb values( 'a ')
insert @tb values( 'b ')
insert @tb values( 'c ')
insert @tb values( 'c ')
insert @tb values( 'd ')
/*要得到这种结果,但不能用 Case When,写另一语句*/
Select *,(case when col1 = 'c ' then '9 ' else '8 ' end) from @tb
declare @tb2 table(col1 varchar(5),col2 int)
insert @tb2 select 'c ',9
select t1.*,isnull(t2.col2,8) from @tb t1 full join @tb2 t2 on t1.col1=t2.col1 order by t1.col1
------解决方案-------------------- Declare @tb Table (col1 varchar(5))
insert @tb values( 'a ')
insert @tb values( 'b ')
insert @tb values( 'c ')
insert @tb values( 'c ')
insert @tb values( 'd ')
/*要得到这种结果,但不能用 Case When,写另一语句*/
Select *,(case when col1 = 'c ' then '9 ' else '8 ' end) from @tb
Select b.col1,isnull(a.a,8) from @tb b left join
(select 'c ' col1 ,9 a) a on a.col1= b.col1
。。。比水王慢了~
------解决方案--------------------Declare @tb Table (col1 varchar(5))
insert @tb values( 'a ')
insert @tb values( 'b ')
insert @tb values( 'c ')
insert @tb values( 'c ')
insert @tb values( 'd ')
/*要得到这种结果,但不能用 Case When,写另一语句*/
---不知道这个行么?
select *,isnull((select top 1 '9 ' from @tb where t.col1= 'c '),8) from @tb t
------解决方案--------------------select *,ascii(isnull(nullif(col1, 'c '), 'z '))/122+8 from @tb
这个算不算?
------解决方案--------------------select *, isnumeric(replace(col1, 'c ', '9 '))+8 from @tb