4

同様のエラーで多くの既存の質問をチェックしていましたが、ケースで選択したエラーを解決するのに役立つ回答が見つかりません

select 
    case 
    when e.EthnCode in ('N','A','B','P','W') then ethnicity
    else 'Multi' 
    end as Ethnicity,
    case when cat.CategCode IN ('CH','IN','NB','PG','PP','SR')then Category else 0 end as ' ',
 --COUNT (c.EthnCode) as '(A) tottal Numbers of participamts by Rase', 
 sum(case when C.StatusID =1 or C.StatusID =2 then 1 else 0 end),
 sum(case when c.Hispanic then 1 else 0 end) as 'Hisp'
from  Ethnicity E
LEFT JOIN Clients C
ON c.EthnCode = e.EthnCode 
LEFT join Category cat 
ON c.CategCode = cat.CategCode
where c.StatusID = 1 
group by case 
    when e.EthnCode in ('N','A','B','P','W') then ethnicity
    else 'Balance Reporting More Than One Race' 
    end

そしてそれはエラーをスローします

Msg 4145, Level 15, State 1, Line 9
An expression of non-boolean type specified in a context where a condition is expected, near 'then'.

9号線

 sum(case when c.Hispanic then 1 else 0 end) as 'Hisp'

それはヒスパニックに下線を引いています助けが必要です:)

4

2 に答える 2

3
 sum(case when c.Hispanic then 1 else 0 end) as 'Hisp'

次のように変更します (比較には正しい値とデータ型を使用してください)

 sum(case when c.Hispanic = 1 then 1 else 0 end) as 'Hisp'

または、次のような単純なケースに

 sum(case c.Hispanic when 1 then 1 else 0 end) as 'Hisp'
于 2013-02-25T23:50:01.643 に答える
1

C.Hispanic がブール値であるとは考えていません。 Case When C.Hispanic = 1 Then....

またはそのようなものがそれを整理します。

于 2013-02-25T23:50:29.487 に答える