首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

统计SQL

2012-02-11 
求一个 统计SQLID访问员编号问卷编号内容1A01001SH2A01001男3A02002BJ4A02002男5A03003SH6A03003男求Sql得

求一个 统计SQL
ID   访问员编号   问卷编号     内容
1         A01                 001           SH
2         A01                 001           男
3         A02                 002           BJ
4         A02                 002           男
5         A03                 003           SH
6         A03                 003           男

求Sql   得到   同时满足在一个   问卷编号中   内容为SH,并且等于男的记录数
比如   ID   =1   问卷编号001   内容是SH
          ID   =2   问卷编号001   内容男
          统计出来就是符合的一条记录

比如   ID   =5   卷编号003   内容SH
          ID   =6   卷编号003   内容男
统计出来就是符合的另外一条记录

所以根据上面的表记录
最终得到2条符合条件的记录,条件为(同一个问卷编号中=SH   并且=男)

这个sql怎么写

谢谢

[解决办法]
create table T(ID varchar(100),访问员编号 varchar(100),问卷编号 varchar(100),内容 varchar(100))

insert into T select '1 ', 'A01 ', '001 ', 'SH '
insert into T select '2 ', 'A01 ', '001 ', '男 '
insert into T select '3 ', 'A02 ', '002 ', 'BJ '
insert into T select '4 ', 'A02 ', '002 ', '男 '
insert into T select '5 ', 'A03 ', '003 ', 'SH '
insert into T select '6 ', 'A03 ', '003 ', '男 '


--返回满足条件的记录数
select count(*)
from (select * from T where 内容= 'SH ') AS A
inner join
(select * from T where 内容= '男 ') as B on A.问卷编号=B.问卷编号


drop table T


/*

返回:2

*/
[解决办法]
create table T(ID varchar(100),访问员编号 varchar(100),问卷编号 varchar(100),内容 varchar(100))

insert into T select '1 ', 'A01 ', '001 ', 'SH '
insert into T select '2 ', 'A01 ', '001 ', '男 '
insert into T select '3 ', 'A02 ', '002 ', 'BJ '
insert into T select '4 ', 'A02 ', '002 ', '男 '
insert into T select '5 ', 'A03 ', '003 ', 'SH '
insert into T select '6 ', 'A03 ', '003 ', '男 '


--返回满足条件的记录数
select count(*)
from (select * from T where 内容= 'SH ') AS A
inner join
(select * from T where 内容= '男 ') as B on A.问卷编号=B.问卷编号


--或

select count(*)
from T as A
where 内容= 'SH '
and exists (select * from T where 问卷编号=A.问卷编号 and 内容= '男 ')

drop table T


/*

返回:2

*/
[解决办法]
create table t1(id int identity,visNum nvarchar(10),aNum nvarchar(10),sContent nvarchar(10))
insert into t1
select 'A01 ', '001 ', 'SH ' union all


select 'A01 ', '001 ', '男 ' union all
select 'A02 ', '002 ', 'BJ ' union all
select 'A02 ', '002 ', '男 ' union all
select 'A03 ', '003 ', 'SH ' union all
select 'A03 ', '003 ', '男 '
go

--下边这句可以找出符合你要求的记录的问卷编号(aNum),之后你可以进行其他的操作
select aNum
from t1 where sContent = 'SH ' or sContent = '男 '
group by aNum having count(*) = 2
order by aNum
[解决办法]
select A.访问员编号,A.问卷编号,A.内容,B.内容
from (select * from T where 内容= 'SH ') AS A
inner join (select * from T where 内容= '男 ') AS B
on A.问卷编号=B.问卷编号
[解决办法]
可以直接用關聯寫,不用子查詢


Select Distinct A.问卷编号
From 表 A
Inner Join 表 B
On A.问卷编号 = B.问卷编号
Where A.内容 = 'SH ' And B.内容 = '男 '

热点排行