select
  name,
  total=sum(price)
from
  tb
group by
  name
having sum(price)>22

解决方案 »

  1.   

    select
      name,
      total=sum(price)
    from
      tb
    where
      year([datetime])=2009
    group by
      name
    having sum(price)>22
      

  2.   

    DECLARE @T TABLE(id INT, price INT, name NVARCHAR(10),[datetime]DATETIME) 
    INSERT @T SELECT 1  ,20,        N'一部' ,     '2008.09.09' 
    INSERT @T SELECT 2  ,25 ,       N'一部'  ,    '2009.02.19' 
    INSERT @T SELECT 3  ,10  ,      N'一部'   ,   '2009.02.20' 
    INSERT @T SELECT 4 , 30   ,     N'二部'   ,   '2009.03.09' 
    INSERT @T SELECT 5,  15    ,    N'三部'    ,  '2009.04.05' 
    SELECT [NAME],SUM(PRICE)TOTAL FROM @T WHERE DATEPART(YY,[DATETIME])=2009 GROUP BY [NAME]
    /*NAME       TOTAL
    ---------- -----------
    一部         35
    三部         15
    二部         30*/
      

  3.   

    DECLARE @T TABLE(id INT, price INT, name NVARCHAR(10),[datetime]DATETIME) 
    INSERT @T SELECT 1  ,20,        N'一部' ,     '2008.09.09' 
    INSERT @T SELECT 2  ,25 ,       N'一部'  ,    '2009.02.19' 
    INSERT @T SELECT 3  ,10  ,      N'一部'   ,   '2009.02.20' 
    INSERT @T SELECT 4 , 30   ,     N'二部'   ,   '2009.03.09' 
    INSERT @T SELECT 5,  15    ,    N'三部'    ,  '2009.04.05' 
    SELECT [NAME],SUM(PRICE)TOTAL FROM @T WHERE DATEPART(YY,[DATETIME])=2009 GROUP BY [NAME]
    HAVING SUM(PRICE)>22
    --大于22
    /*NAME       TOTAL
    ---------- -----------
    一部         35
    二部         30*/
      

  4.   

    DECLARE @T TABLE(id INT, price INT, name NVARCHAR(10),[datetime]DATETIME) 
    INSERT @T SELECT 1  ,20,        N'一部' ,     '2008.09.09' 
    INSERT @T SELECT 2  ,25 ,       N'一部'  ,    '2009.02.19' 
    INSERT @T SELECT 3  ,10  ,      N'一部'   ,   '2009.02.20' 
    INSERT @T SELECT 4 , 30   ,     N'二部'   ,   '2009.03.09' 
    INSERT @T SELECT 5,  15    ,    N'三部'    ,  '2009.04.05' select sum(price),[name],year([datetime]) from @T group by [name],year([datetime])
    sum         name       年份
    ----------- ---------- -----------
    20          一部         2008
    30          二部         2009
    15          三部         2009
    35          一部         2009(4 行受影响)
      

  5.   

    select
      name,
      sum(price) as total
    from tb
    where year([datetime])=2009
    group by name
    having sum(price)>22
      

  6.   

    --原理:
    1、where的使用
    2、group by与having的结合使用