--> liangCK小梁 于2008-10-21
--> 生成测试数据: #A_test
IF OBJECT_ID('tempdb.dbo.#A_test') IS NOT NULL DROP TABLE #A_test
CREATE TABLE #A_test (info_id INT,depart_id VARCHAR(1),publish_time DATETIME)
INSERT INTO #A_test
SELECT 1,'a','2008-10-20 11:25:36.520' UNION ALL
SELECT 2,'a','2008-10-20 11:25:36.520' UNION ALL
SELECT 3,'a','2008-10-20 11:25:36.520' UNION ALL
SELECT 4,'b','2008-10-20 11:25:36.520' UNION ALL
SELECT 5,'b','2008-10-20 11:25:36.520' UNION ALL
SELECT 6,'b','2008-10-20 11:25:36.520' UNION ALL
SELECT 7,'a','2008-10-19 11:25:36.520' UNION ALL
SELECT 8,'a','2008-10-19 11:25:36.520' UNION ALL
SELECT 9,'a','2008-10-19 11:25:36.520' UNION ALL
SELECT 10,'b','2008-10-19 11:25:36.520' UNION ALL
SELECT 11,'b','2008-10-19 11:25:36.520' UNION ALL
SELECT 12,'b','2008-10-19 11:25:36.520' UNION ALL
SELECT 13,'a','2008-10-19 11:25:36.520' UNION ALL
SELECT 14,'a','2008-10-19 11:25:36.520'--SQL查询如下:SELECT depart_id,COUNT(*) AS cnt
FROM #A_test
GROUP BY depart_id;SELECT depart_id,COUNT(*) AS cnt
FROM #A_test
WHERE DATEDIFF(DAY,'2008-10-19',publish_time)=0
GROUP BY depart_id;/*
depart_id cnt
--------- -----------
a         8
b         6(2 行受影响)depart_id cnt
--------- -----------
a         5
b         3(2 行受影响)*/

解决方案 »

  1.   


    --1、
    SELECT depart_id,[sum]=COUNT(*) FROM A_test GROUP BY depart_id--2、
    SELECT depart_id,[sum]=COUNT(*) FROM A_test WHERE DATEDIFF(dd,'2008-10-19',publish_time)=0
    GROUP BY depart_id
      

  2.   

    那么如果问题换成这样:
    通过一个sql:select info_id,depart_id,publish_time from B_test,查询出来的结果如下:
    info_id   depart_id        publish_time
     1     |      a     |    2008-10-20 11:25:36.520
     2     |      a     |    2008-10-20 11:25:36.520
     3     |      a     |    2008-10-20 11:25:36.520
     4     |      b     |    2008-10-20 11:25:36.520
     5     |      b     |    2008-10-20 11:25:36.520
     6     |      b     |    2008-10-20 11:25:36.520
     7     |      a     |    2008-10-19 11:25:36.520
     8     |      a     |    2008-10-19 11:25:36.520
     9     |      a     |    2008-10-19 11:25:36.520
     10    |      b     |    2008-10-19 11:25:36.520
     11    |      b     |    2008-10-19 11:25:36.520
     12    |      b     |    2008-10-19 11:25:36.520
     13    |      a     |    2008-10-19 11:25:36.520
     14    |      a     |    2008-10-19 11:25:36.520-------------------
    【1】现在要按照depart_id和publish_time进行统计
    需要查询后的结果为:(sql语句怎么写)depart_id  sum 
    a    8
    b    6
    ------------------
    【2】按照时间查询时[
    where 
     convert(char(10),publish_time,20)>='2007-10-18' 
    AND convert(char(10),publish_time,20)<='2008-10-19' ]
    需要查询后的结果为:(sql语句怎么写)
    depart_id  sum
    a     5
    b           3
      

  3.   

    DECLARE @d DATETIME
    --SET @d='2008-10-19' --赋值则传值, 不赋值则不传
    SELECT depart_id,COUNT(*)
    FROM a_test
    WHERE DATEDIFF(dd,publish_time,ISNULL(@d,publish_time))=0
    GROUP BY depart_id
      

  4.   

    --> liangCK小梁 于2008-10-21
    --> 生成测试数据: #A_test
    IF OBJECT_ID('tempdb.dbo.#A_test') IS NOT NULL DROP TABLE #A_test
    CREATE TABLE #A_test (info_id INT,depart_id VARCHAR(1),publish_time DATETIME)
    INSERT INTO #A_test
    SELECT 1,'a','2008-10-20 11:25:36.520' UNION ALL
    SELECT 2,'a','2008-10-20 11:25:36.520' UNION ALL
    SELECT 3,'a','2008-10-20 11:25:36.520' UNION ALL
    SELECT 4,'b','2008-10-20 11:25:36.520' UNION ALL
    SELECT 5,'b','2008-10-20 11:25:36.520' UNION ALL
    SELECT 6,'b','2008-10-20 11:25:36.520' UNION ALL
    SELECT 7,'a','2008-10-19 11:25:36.520' UNION ALL
    SELECT 8,'a','2008-10-19 11:25:36.520' UNION ALL
    SELECT 9,'a','2008-10-19 11:25:36.520' UNION ALL
    SELECT 10,'b','2008-10-19 11:25:36.520' UNION ALL
    SELECT 11,'b','2008-10-19 11:25:36.520' UNION ALL
    SELECT 12,'b','2008-10-19 11:25:36.520' UNION ALL
    SELECT 13,'a','2008-10-19 11:25:36.520' UNION ALL
    SELECT 14,'a','2008-10-19 11:25:36.520'--SQL查询如下:--1
    SELECT depart_id,COUNT(*) AS cnt
    FROM #A_test
    GROUP BY depart_id;
    --2
    SELECT depart_id,COUNT(*) AS cnt
    FROM #A_test
    WHERE publish_time BETWEEN '2008-10-18' AND '2008-10-19 23:59:59'
    GROUP BY depart_id;
    /*
    depart_id cnt
    --------- -----------
    a         8
    b         6(2 行受影响)depart_id cnt
    --------- -----------
    a         5
    b         3(2 行受影响)*/