表usserinf
userid user_Identity user_MemberOrParty user_Organize
1000 0 1 1
1001 1 2 0
1002 2 1 2
1003 1 0 0
1004 1 1 2
1005 2 2 1
备注
user_Identity=0 表示默认
user_Identity=1 表示一般
user_Identity=2 表示普通
user_MemberOrParty=0 表示简单
user_MemberOrParty=1 表示复杂
user_MemberOrParty=2 表示超难
user_Organize=0 表示 甲
user_Organize=1 表示 乙
user_Organize=2 表示 丙
如何查询实现结果如下
结果一:
默认 一般 普通 简单 复杂 超难 甲 乙 丙
1 3 2 1 3 2 2 2 2
结果二:
默认 1
一般 3
普通 2
简单 1
复杂 3
超难 2
甲 2
乙 2
丙 2
------解决方案--------------------
--usserinf
if object_id('usserinf','u') is not null
drop table usserinf
go
create table usserinf
(
userid char(4),
user_Identity smallint,
user_MemberOrParty smallint,
user_Organize smallint
)
go
insert into usserinf values
('1000',0,1,1),
('1001',1,2,0),
('1002',2,1,2),
('1003',1,0,0),
('1004',1,1,2),
('1005',2,2,1)
go
--SQL
--结果一
select *from (
select '默认' 中文, count(默认) Tag from(
select
case when user_Identity=0 then user_Identity else null end 默认
from usserinf) A
where 默认 is not null union all
select '一般', count(一般) Tag from(
select
case when user_Identity=1 then user_Identity else null end 一般
from usserinf) A
where 一般 is not null union all
select '普通', count(普通) Tag from(
select
case when user_Identity=2 then user_Identity else null end 普通