-2

Access に次のコードがあり、SQL で動作する必要があります。Is 数値部分が私を悩ませています。

Sum([Employee Count]*IIf(IsNumeric([Length]),[Length],0)) AS Total_hours, 
4

2 に答える 2

2

IIF()を式に置き換えCASEます。はIsNumeric()SQL Server で有効です。

Sum([Employee Count]*
    case when IsNumeric([Length]) = 1
          then [Length]
          else 0 end) AS Total_hours,
于 2013-01-21T20:20:15.577 に答える
0

0 は SUM 集計に影響しないため、"not isnumeric" を除外することもできます。

select
Sum([Employee Count]*[Length]) AS Total_hours
...
where isnumeric([Length]) = 1

以下のコードを参照してください。

declare @table table (abc varchar(100))
insert into @table
select '1'
union select '200'
union select '200A'

select sum(convert(int,abc))
from @table
where isnumeric(abc) = 1

sqlfiddle

于 2013-01-21T20:32:59.493 に答える