有表TABLE1 
记录如下: ID date1        result 
1 1985-5-20  有        
2 1985-5-20  有        
3 1985-5-20  无        
4 1985-5-20  无        
5 1985-5-21  有        
6 1985-5-21  有        
7 1985-5-21  无        
8 1985-5-21  无        
9 1985-5-20  有        
10 1985-5-20  有        
11 1985-5-21  无        写一SQL 得到下面结果 : 
 DATE1     有   无
1985-5-20  4 2
1985-5-21  2 3

解决方案 »

  1.   

    select A.DATE1,
    count(A.result)as 有,
    from table1 A 
    where A.result ='有'  
    GROUP BY A.DATE1,A.result ,B.无
      

  2.   

    日期 分组查有 的 LEFT  JOIN  日期分组 查 无的: 
    select A.DATE1,
    count(A.result)as 有,
    B.无
    from table1 A 
    LEFT JOIN (select date1, (count(result)) AS 无   from table1  where result ='无'  GROUP BY DATE1,result ) B 
    ON A.DATE1 = B.DATE1
    where A.result ='有'  
    GROUP BY A.DATE1,A.result ,B.无
      

  3.   

     count  和 group by  order by  我知道 ,主要是 把 有和无连接起来, 3 楼的的确可以我当时 就是连接不起来. 我只写出 2楼的写法 .谢谢
      

  4.   

    SELECT 
    t.DATE1,count(CASE t.RESULT WHEN  '有' then 1 else 0 END)  as 有,
    count(CASE t.RESULT WHEN '无' then 1 else 0 END) as 无
    FROM TABLE1 t GROUP BY 
    t.DATE1
      

  5.   

    仿照 2 楼 写的
    declare @tab table
    (
    ID int,
    date1 datetime,
    result char(4)
    )
    insert into @tab
    select 1,'1985-5-20','有'
    union all select 2,'1985-5-20','有'
    union all select 3,'1985-5-20','无'
    union all select 4,'1985-5-20','无'
    union all select 5,'1985-5-21','有'
    union all select 6,'1985-5-21','有'
    union all select 7,'1985-5-21','无'
    union all select 8,'1985-5-21','无'
    union all select 9,'1985-5-20','有'
    union all select 10,'1985-5-20','有'
    union all select 11,'1985-5-21','无'--select A.DATE1,
    --count(A.result)as 有,
    --B.无
    --from @tab A  
    --LEFT JOIN (select date1, (count(result)) AS 无 from @tab where result ='无' GROUP BY DATE1,result ) B  
    --ON A.DATE1 = B.DATE1
    --where A.result ='有'   
    --GROUP BY A.DATE1,A.result ,B.无select a.date1,a.有,b.无 from
    (select date1, count(result)as 有 from @tab where result = '有' group by date1) as a
    left join (select date1,count(result) as 无 from @tab where result ='无' group by date1 ) as b
    on a.date1 = b.date1