2013-07-24 144 views
1

但是,我建立了一个查询(见下文),而不是返回“大于20或30”,我希望我的查询实际显示计数(例如31,35,50等)。我似乎无法弄清楚如何去做。谢谢您的帮助。字符长度SQL Server 2005

select 
cc_units_of_measure.description as UOM_Description, 
case when LEN(cc_units_of_measure.description) < 20 then 'OK' 
else 'Greater than 20' 
end as Results_UOM_description, 
cc_units_of_measure.company_abbreviation as UOM_Company_Abbreviation, 
case when LEN(cc_units_of_measure.company_abbreviation) < 20 then 'OK' 
else 'Greater than 20' 
end as Results_UOM_company_abbreviation, 
cc_frequencies.description as Freq_Description, 
case when LEN(cc_frequencies.description) < 30 then 'OK' 
else 'Greater than 30' 
end as Results_Frequency_description 
from cc_units_of_measure, cc_frequencies 
+0

通过计数你的意思是字符的长度? – Vasanth

+0

尝试从'select Sum(Len(cc_units_of_measure.description)<20 then 1 else 0 end)的情况下工作为[UOM_LT20],...'。 – HABO

+0

它是长度还是数字?另外,你的“else”应该是“等于或大于xx” – Elmer

回答

1

如果你改变了case语句的其他部分返回长,你会得到你正在寻找像这样的值:

SELECT cc_units_of_measure.description AS UOM_Description , 
     CASE WHEN LEN(cc_units_of_measure.description) < 20 THEN 'OK' 
      ELSE LEN(cc_units_of_measure.description) 
     END AS Results_UOM_description , 
     cc_units_of_measure.company_abbreviation AS UOM_Company_Abbreviation , 
     CASE WHEN LEN(cc_units_of_measure.company_abbreviation) < 20 THEN 'OK' 
      ELSE LEN(cc_units_of_measure.company_abbreviation) 
     END AS Results_UOM_company_abbreviation , 
     cc_frequencies.description AS Freq_Description , 
     CASE WHEN LEN(cc_frequencies.description) < 30 THEN 'OK' 
      ELSE LEN(cc_frequencies.description) 
     END AS Results_Frequency_description 
FROM cc_units_of_measure , 
     cc_frequencies 
+0

我试过了,但最终出现了一个错误:Msg 245,Level 16,State 1,Line 1 将varchar值'OK'转换为数据类型int时转换失败。 – user2612714