在线等待一条sql语句
现在表:tbl 
 字段:   客户号cardno   交易类型jylx 
 数据为: 
                      1001         1 
                      1001         2 
 需求:同一个客户发生的交易类型不同,现对客户交易单的个数进行统计. 
 要求结果: 
    客户号         交易类型1   交易类型2 
                   1001                     1                                             1   
 本人目前实现的方法: 
 select   cardno,count(case   jylx   when    '1 '   then   jylx   end)   as   jylx_one,count(case   jylx   when    '2 '   then   jylx   end)   as   jylx_two   from   tbl   group   by   1   
 但实的结果为: 
    客户号         交易类型1   交易类型2 
                   1001                     1                                              
                   1001                                                                  1     
 我现在想用一条sql语句实现,请求帮助!!多谢!
------解决方案----------------------创建测试数据 
 create table tbl(cardno varchar(10),jylx char(1)) 
 insert into tbl 
 select  '1001 ', '1 ' 
 union all select  '1001 ', '2 '   
 --查询 
 select cardno, 
 	sum(case when jylx= '1 ' then 1 else 0 end) as jylx_one, 
 	sum(case when jylx= '2 ' then 1 else 0 end) as jylx_two 
 from tbl 
 group by cardno   
 --结果 
 /* 
 cardno     jylx_one    jylx_two     
 ---------- ----------- -----------  
 1001       1           1   
 (所影响的行数为 1 行) 
 */
------解决方案--------------------create table tbl(cardno varchar(10),jylx char(1)) 
 insert into tbl values( '1001 ',    '1 ') 
 insert into tbl values( '1001 ',    '2 ') 
 go   
 declare @sql varchar(8000) 
 set @sql =  'select cardno ' 
 select @sql = @sql +  ' , sum(case jylx when  ' ' ' + jylx +  ' ' ' then 1 else 0 end) [交易类型 ' + jylx +  '] ' 
 from (select distinct jylx from tbl) as a 
 set @sql = @sql +  ' from tbl group by cardno ' 
 exec(@sql)    
 drop table tbl   
 /* 
 cardno     交易类型1   交易类型2        
 ---------- ----------- -----------  
 1001       1           1 
 */