A表里面
id  date         name  datepart
1 2012-12-28  张三 AM
2 2012-12-29  李四 PM
3 2012-12-21  王五 AM
4 2012-12-22  张柳 PM
5 2012-12-28  张三 PM
6 2012-12-29  李四 AM
7 2012-12-28  李飞 PM
8 2012-12-29  张超 AM需要根据某个时间去查出 那些人哪一天有空闲时间
比如 2012-12-28 那天 李飞 可以安排,因为张三,AM,PM都安排了
所以具体每天可以安排的人有
2012-12-21  王五 AM
2012-12-22  张柳 PM
2012-12-28  李飞 PM
2012-12-29  张超 AM
如何通过SQL写出来呢,求指导。date

解决方案 »

  1.   

    if object_id('[TB]') is not null drop table [TB]
    go
    create table [TB] (id int,date datetime,name nvarchar(4),datepart nvarchar(4))
    insert into [TB]
    select 1,'2012-12-28','张三','AM' union all
    select 2,'2012-12-29','李四','PM' union all
    select 3,'2012-12-21','王五','AM' union all
    select 4,'2012-12-22','张柳','PM' union all
    select 5,'2012-12-28','张三','PM' union all
    select 6,'2012-12-29','李四','AM' union all
    select 7,'2012-12-28','李飞','PM' union all
    select 8,'2012-12-29','张超','AM'SELECT date,NAME,MIN(DATEPART) AS DD FROM TB  GROUP BY date,NAME HAVING count(1)=1  ORDER BY date /*
    date NAME DD
    2012-12-21 00:00:00.000 王五 AM
    2012-12-22 00:00:00.000 张柳 PM
    2012-12-28 00:00:00.000 李飞 PM
    2012-12-29 00:00:00.000 张超 AM*/
      

  2.   


    同一天有多个人 能安排,也是一样的啊。 关键不是看am 和pm 在同一天,同一个人是否都占了吗?