Sql 计算成功的按位匹配数

Sql 计算成功的按位匹配数,sql,sql-server,Sql,Sql Server,我将一个值存储在一个表中,该表包含多项选择答案的结果。选项与此类似: Allergy 1 Cardiology 2 Chest Disease 4 Dermatology 8 Dialysis 16 Emergency Room 32 Ambulance Trips 64 Gastroenterology 128 General Medicine 256 General Surgery 512 Gynecology 1024 Hematology 2048 Meth

我将一个值存储在一个表中,该表包含多项选择答案的结果。选项与此类似:

Allergy 1
Cardiology  2
Chest Disease   4
Dermatology 8
Dialysis    16
Emergency Room  32
Ambulance Trips 64
Gastroenterology    128
General Medicine    256
General Surgery 512
Gynecology  1024
Hematology  2048
Methadone   4096
Neurology   8192
Neurosurgery    16384
Obstetrics  32768
Ophthalmology   65536
Orthopedics 131072
Physical Therapy    262144
Plastic Surgery 524288
Podiatry    1048576
Proctology  2097152
Psychiatry  4194304
Surgery Performed   8388608
Thoracic Surgery    16777216
Urology 33554432
Outside X-Rays  67108864
Diagnostic Test(outside)    134217728
Other Trips/Outside Consults    268435456
当有人填写答案时,答案/值存储如下:

id                   form_record form_item   value                entered_date
-------------------- ----------- ----------- -------------------- -----------------------
376418               17453       2943        1114241              2013-05-23 09:56:06.000
376889               17475       2943        1056896              2013-05-23 11:00:06.000
因此,当我尝试查看用户选择了什么时,例如,
神经学
,今天我做了如下操作:

select
    fa.value & 8192 as 'Neurology'
from
    form_records fr
        inner join form_names fn on fn.id = fr.form_Name
        inner join form_items fi on fn.id = fi.form_name
        inner join form_answers fa on fr.id = fa.form_record
            and fa.form_item = fi.id
where
    fn.name like '%Consultation Review Form%'   
    and dateadd(dd, 0, datediff(dd, 0, fr.date)) = dateadd(dd, 0, datediff(dd, 0, getdate()))
我的结果如下:

Neurology
--------------------
0
8192

(2 row(s) affected)
我知道第二个完成此答案的用户选择了
Neurology
,但第一个完成此答案的用户没有选择
Neurology

我想做的是统计一下当天神经科的答案/数值

通过这样做:

select
    count(fa.value & 8192) as 'Neurology'
返回
2
。我希望它返回
1

select
    count(NULLIF(fa.value & 1, 0)) as 'Neurology'
    ...
这会将“不匹配”更改为NULL,COUNT将忽略NULL