日期:2014-05-18 浏览次数:20461 次
if OBJECT_ID('test')is not null drop table test go create table test( [900类型] varchar(20), [1800类型] varchar(20), [TD类型] varchar(20) ) go insert test select 'BTS-008','BTS-850','ABS-22' union all select '','BTS-851','ABS-23' union all select 'KJH-55','LJD-002','' union all select 'BTS-010','','' union all select '','BTS-853','' union all select '','','' go with t as( select px=ROW_NUMBER()over(order by getdate()), case when [900类型]='' then 1 else 0 end value1, case when [1800类型]='' then 1 else 0 end as value2, case when [TD类型]='' then 1 else 0 end as value3, * from test ) select [900类型],[1800类型],[TD类型], case when value1=1 and value2 =1 and value3=1 then '900类型_1800类型_TD类型' when value1=1 and value2=1 and value3=0 then '900类型_1800类型' when value1=1 and value2=0 and value3=1 then '900类型_TD类型' when value1=0 and value2=1 and value3=1 then '1800类型_TD类型' when value1=0 and value2 =0 and value3=1 then 'TD类型单系统' when value1=1 and value2 =0 and value3=0 then '900类型单系统' when value1=0 and value2 =1 and value3=0 then '1800类型单系统' else '无' end as 系统类型 from t /* 900类型 1800类型 TD类型 系统类型 ----------------------------------------- BTS-008 BTS-850 ABS-22 无 BTS-851 ABS-23 900类型单系统 KJH-55 LJD-002 TD类型单系统 BTS-010 1800类型_TD类型 BTS-853 900类型_TD类型 900类型_1800类型_TD类型 */
------解决方案--------------------
select *,系统类型=case when [900类型] <> '' and [1800类型] <> '' and [TD类型]<>'' then '900+1800+TD' when [900类型] <> '' and [1800类型] <> '' then '900+1800' when [900类型] <> '' and [TD类型]<>'' then '900+TD' when [1800类型] <> '' and [TD类型] <>'' then '1800+TD' when [900类型] <> '' then '900单系统' when [1800类型] <> '' then '1800单系统' when [TD类型] <> '' then 'TD单系统' else '无' end from test