表table1
co1 date bz1 bz2 name1 name2
11  09-11 * a 张三 李四
11 09-11 * * 张三 王五
12 09-11 a * 李四 张三列co1是一个编码列,如一二列都是11,那么如果这两条都符合查询条件,也只能算一条数据
bz1,(标志1)查询时符合条件bz1=*时,name1才算一条数据,如以上数据,因为name1中张三对应的bz1的数据只有前两条,所以张三对应的bz1数据条数是1
同理,name2对应于bz2
查询结果姓名 bz1 bz2
张三 1 2
李四 0 0
王五 0 1问,怎么写这个语句,因为才疏学浅,自己只能分开查询,但还是想知道怎么能一次出结果?

解决方案 »

  1.   

    declare @t table(col int, [date] varchar(20), bz1 varchar(20),bz2 varchar(20), name1 varchar(20),name2 varchar(20))
    insert into @t values( 11 ,'09-11', '*', 'a', '张三', '李四') 
    insert into @t values( 11 ,'09-11', '*', '*', '张三', '王五') 
    insert into @t values( 12 ,'09-11', 'a', '*', '李四', '张三')
    select a.[Name],
    (select Count(distinct col) from @t where name1=a.[Name] and bz1='*') as bz1,
    (select Count(distinct col) from @t where name2=a.[Name] and bz2='*') as bz1 from(
    select distinct(name1) as [name] from @t  
    union 
    select distinct(name2) as [name] from @t )a试试