A表:
AID AName
1 a
2 b
3 c
4 d
5 E
B表
BID AID
1 1
2 1
3 1
4 1
5 2
6 2
7 2
8 3
9 3
10 4想通过SQL语句查询出如下表样式的结果:
AID AName count
1 a 4
2 b 3
3 c 2
4 d 1
5 e 0count是统计B表中有AID的数量的,这样的SQL语句怎么写?!求指导!!!!!!!!!!!!!!!!!!!
AID AName
1 a
2 b
3 c
4 d
5 E
B表
BID AID
1 1
2 1
3 1
4 1
5 2
6 2
7 2
8 3
9 3
10 4想通过SQL语句查询出如下表样式的结果:
AID AName count
1 a 4
2 b 3
3 c 2
4 d 1
5 e 0count是统计B表中有AID的数量的,这样的SQL语句怎么写?!求指导!!!!!!!!!!!!!!!!!!!
解决方案 »
- 数组如何一起存储string 和 int
- Gridviwe和数据库之间的数据传输问题
- 页面运用三元表达式 根据类型判断决定超链接值时报出异常,说此操作需要iis集成管线模式
- 我的关闭浏览器的javascript怎么不管用?
- 如何让gridview 从详细页返回gridview页时还是显示原来的页?
- 如何在DataGrid中生成一个列动态复制数据中的数据
- 如何获取URL参数的名字?
- 急!.net2.0中 如何动态把seesion中的信息添加到gridview中?
- 不刷新页面,如何每过1分钟就触发后代码中的一个方法
- 水晶报表中页面显示记录数的设置问题?
- ASP.NET怎么将EXCEL表格中的数据导入到MYSQL数据库中
- 求一个 jquery 无刷新分页例子 asp.net
BID AID step
1 1 1
2 1 1
3 1 1
4 1 1
5 2 1
6 2 1
7 2 1
8 3 1
9 3 1
10 4 1
11 1 2
12 1 2
13 2 2
14 3 2
用Step控制 count1是step=1的,count2是step=2查询出来的表:
AID AName count1 count2
1 a 4 2
2 b 3 1
3 c 2 1
4 d 1 0
5 e 0 0
这样写不会显示出count为0的
select a.aid,a.aname,count(b.aid) c from #tempA a left join #tempB b on a.aid=b.aid group by a.aid,a.aname
/*
aid aname c
1 a 4
2 b 2
3 c 2
4 d 1
5 e 0
*/
go
if OBJECT_ID('A') is not null drop table A
go
if OBJECT_ID('B') is not null drop table B
go
create table A
(
AID int,
AName nvarchar(20)
)
create table B
(
BID int,
AID int,
step int
)
insert into A
select 1,'A' union all
select 2,'B'
insert into B
select 1,1,1 union all
select 2,1,2--第一个
select A.AID,A.AName,COUNT(*) as count from A inner join B
on A.AID=B.AID group by A.AID,A.AName--第二个
select A.AID,A.AName,sum(case B.step when 1 then 1 else 0 end ) as count1,
sum(case B.step when 2 then 1 else 0 end ) as count2 from A inner join B
on A.AID=B.AID group by A.AID,A.AName
go
if OBJECT_ID('A') is not null drop table A
go
if OBJECT_ID('B') is not null drop table B
go
create table A
(
AID int,
AName nvarchar(20)
)
create table B
(
BID int,
AID int,
step int
)
insert into A
select 1,'A' union all
select 2,'B'
insert into B
select 1,1,1 union all
select 2,1,2--第一个
select A.AID,A.AName,COUNT(B.BID) as count from A left join B
on A.AID=B.AID group by A.AID,A.AName--第二个
select A.AID,A.AName,sum(case B.step when 1 then 1 else 0 end ) as count1,
sum(case B.step when 2 then 1 else 0 end ) as count2 from A left join B
on A.AID=B.AID group by A.AID,A.AName