【发布时间】:2013-11-14 03:27:12
【问题描述】:
大家好,我有以下要查询的示例数据。
MemberID AGEQ1 AGEQ2 AGEQ2
-----------------------------------------------------------------
1217 2 null null
58458 3 2 null
58459 null null null
58457 null 5 null
299576 6 5 7
我需要做的是查找表格,如果任何 AGEx COLUMN 包含任何数据,那么它会计算每列中该行有数据的次数
结果示例:
对于 memberID 1217,计数为 1
对于 memberID 58458,计数为 2
对于 memberID 58459,计数将为 0 或 null
对于 memberID 58457,计数为 1
对于 memberID 299576,计数为 3
如果我查询整个表,这就是它在 SQL 中的样子
1 个孩子 - 2 个
2 个孩子 - 1 个
3 个孩子 - 1 个
0 个孩子 - 1 个
到目前为止,我一直在使用以下查询进行此操作,该查询效率不高,并且确实给出了不正确的计数,因为人们可以回答 AGE 问题的多种组合。此外,我必须编写多个查询并将 is null 更改为 not null,具体取决于我要计算一个人有多少孩子
select COUNT (*) as '1 Children' from Member
where AGEQ1 is not null
and AGEQ2 is null
and AGEQ3 is null
上面的查询只给了我 1 的答案,但我也希望能够计算其他列的数据
希望这是好的和清晰的,提前谢谢你
【问题讨论】:
-
您有多少个
AGEx列?是固定的吗?而这怎么可能同时是mysql和sql server? -
对不起已经改变了,我有 6 个,但我只展示了 3 个作为示例,但原理相同,我不想为每个组合进行多个查询
标签: sql sql-server sql-server-2008