having 就是过滤 group by分组聚合后的结果的select 医疗服务序号 ,count(1) from A inner join B on A. 医疗服务序号 =B. 医疗服务序号 
group by  医疗服务序号 
having count(1)>N

解决方案 »

  1.   

     SORRY,我没说清楚,是要把收费明细表里一天之内收费次数总和超过限制的收费记录取出来,
      

  2.   


    简化了一下create table 收费项目表
    (
    Categoryid char(10),
    CategoryName varchar(20),
    times int
    )
    insert into 收费项目表 values ('A','项目A',2)
    insert into 收费项目表 values ('B','项目A',3)create table 收费明细表
    (
    DetailID varchar(50),
    Categoryid varchar(10),
    CreateDate datetime
    )insert into 收费明细表 values ('1','A',GETDATE())
    insert into 收费明细表 values ('2','A',GETDATE())
    insert into 收费明细表 values ('3','A',GETDATE())
    insert into 收费明细表 values ('4','B',GETDATE())
    insert into 收费明细表 values ('5','B',GETDATE())
    select * from
    (
    select distinct A.Categoryid,A.CategoryName,COUNT(1) over(partition by A.Categoryid) as facttimes,A.times
    from 收费项目表 A inner join 收费明细表 B on A.Categoryid=B.Categoryid
    )t where t.facttimes>t.times
      

  3.   

    Categoryid CategoryName         facttimes   times
    ---------- -------------------- ----------- -----------
    A          项目A                  3           2(1 行受影响)
      

  4.   


    简化了一下create table 收费项目表
    (
    Categoryid char(10),
    CategoryName varchar(20),
    times int
    )
    insert into 收费项目表 values ('A','项目A',2)
    insert into 收费项目表 values ('B','项目A',3)create table 收费明细表
    (
    DetailID varchar(50),
    Categoryid varchar(10),
    CreateDate datetime
    )insert into 收费明细表 values ('1','A',GETDATE())
    insert into 收费明细表 values ('2','A',GETDATE())
    insert into 收费明细表 values ('3','A',GETDATE())
    insert into 收费明细表 values ('4','B',GETDATE())
    insert into 收费明细表 values ('5','B',GETDATE())
    select * from
    (
    select distinct A.Categoryid,A.CategoryName,COUNT(1) over(partition by A.Categoryid) as facttimes,A.times
    from 收费项目表 A inner join 收费明细表 B on A.Categoryid=B.Categoryid
    )t where t.facttimes>t.times
    ,是要取收费明细表里一天之内收费次数超过限制的记录,不是去超过限制的收费项目
      

  5.   


    简化了一下create table 收费项目表
    (
    Categoryid char(10),
    CategoryName varchar(20),
    times int
    )
    insert into 收费项目表 values ('A','项目A',2)
    insert into 收费项目表 values ('B','项目A',3)create table 收费明细表
    (
    DetailID varchar(50),
    Categoryid varchar(10),
    CreateDate datetime
    )insert into 收费明细表 values ('1','A',GETDATE())
    insert into 收费明细表 values ('2','A',GETDATE())
    insert into 收费明细表 values ('3','A',GETDATE())
    insert into 收费明细表 values ('4','B',GETDATE())
    insert into 收费明细表 values ('5','B',GETDATE())
    select * from
    (
    select distinct A.Categoryid,A.CategoryName,COUNT(1) over(partition by A.Categoryid) as facttimes,A.times
    from 收费项目表 A inner join 收费明细表 B on A.Categoryid=B.Categoryid
    )t where t.facttimes>t.times
    ,是要取收费明细表里一天之内收费次数超过限制的记录,不是去超过限制的收费项目那不是一样吗select * from
    (
    select distinct B.*,COUNT(1) over(partition by A.Categoryid) as facttimes,A.times
    from 收费项目表 A inner join 收费明细表 B on A.Categoryid=B.Categoryid where create=‘查询日期’
    )t where t.facttimes>t.times