表:
        id        服务点  状态          录入时间
1 服务点一 未审核 2008-11-4 16:50:30
2 服务点二 已审核 2008-11-4 16:51:13
3 服务点一 已完成 2008-11-4 16:51:18
4 服务点二 未审核 2008-11-4 16:51:27
7 服务点四 已完成 2008-11-4 16:52:25
8 服务点一 已完成 2008-11-4 16:52:28
9 服务点二 已审核 2008-11-4 16:52:31
10 服务点一 已完成 2008-11-4 16:52:35
11 服务点三 已完成 2008-11-4 16:52:39
12 服务点一 未审核 2008-11-4 16:50:30
13 服务点二 已审核 2008-11-4 16:51:13
14 服务点一 已完成 2008-11-4 16:51:18
15 服务点二 未审核 2008-11-4 16:51:27
16 服务点四 已完成 2008-11-4 16:52:25
17 服务点一 已完成 2008-11-4 16:52:28
18 服务点二 已审核 2008-11-4 16:52:31
19 服务点一 已完成 2008-11-4 16:52:35
20 服务点三 已完成 2008-11-4 16:52:39
21 服务点三 已审核 2008-11-4 16:51:42
22 服务点四 未审核 2008-11-4 16:51:49
5 服务点三 已审核 2008-11-4 16:51:42
6 服务点四 未审核 2008-11-4 16:51:49目的通过查询实现:
       服务点     记录总数   已审核数   未审核数 已完成数 请教高手要SQL语句要怎么写?

解决方案 »

  1.   

    --> liangCK小梁 于2008-11-04
    --> 生成测试数据: @T
    DECLARE @T TABLE (id INT,服务点 VARCHAR(8),状态 VARCHAR(6),录入时间 DATETIME)
    INSERT INTO @T
    SELECT 1,'服务点一','未审核','2008-11-4 16:50:30' UNION ALL
    SELECT 2,'服务点二','已审核','2008-11-4 16:51:13' UNION ALL
    SELECT 3,'服务点一','已完成','2008-11-4 16:51:18' UNION ALL
    SELECT 4,'服务点二','未审核','2008-11-4 16:51:27' UNION ALL
    SELECT 7,'服务点四','已完成','2008-11-4 16:52:25' UNION ALL
    SELECT 8,'服务点一','已完成','2008-11-4 16:52:28' UNION ALL
    SELECT 9,'服务点二','已审核','2008-11-4 16:52:31' UNION ALL
    SELECT 10,'服务点一','已完成','2008-11-4 16:52:35' UNION ALL
    SELECT 11,'服务点三','已完成','2008-11-4 16:52:39' UNION ALL
    SELECT 12,'服务点一','未审核','2008-11-4 16:50:30' UNION ALL
    SELECT 13,'服务点二','已审核','2008-11-4 16:51:13' UNION ALL
    SELECT 14,'服务点一','已完成','2008-11-4 16:51:18' UNION ALL
    SELECT 15,'服务点二','未审核','2008-11-4 16:51:27' UNION ALL
    SELECT 16,'服务点四','已完成','2008-11-4 16:52:25' UNION ALL
    SELECT 17,'服务点一','已完成','2008-11-4 16:52:28' UNION ALL
    SELECT 18,'服务点二','已审核','2008-11-4 16:52:31' UNION ALL
    SELECT 19,'服务点一','已完成','2008-11-4 16:52:35' UNION ALL
    SELECT 20,'服务点三','已完成','2008-11-4 16:52:39' UNION ALL
    SELECT 21,'服务点三','已审核','2008-11-4 16:51:42' UNION ALL
    SELECT 22,'服务点四','未审核','2008-11-4 16:51:49' UNION ALL
    SELECT 5,'服务点三','已审核','2008-11-4 16:51:42' UNION ALL
    SELECT 6,'服务点四','未审核','2008-11-4 16:51:49'--SQL查询如下:SELECT 服务点,
           COUNT(*) AS 总数,
           COUNT(CASE WHEN 状态='已审核' THEN 1 END) 已审核,
           COUNT(CASE WHEN 状态='未审核' THEN 1 END) 未审核,
           COUNT(CASE WHEN 状态='已完成' THEN 1 END) 已完成
    FROM @T
    GROUP BY 服务点/*
    服务点      总数          已审核         未审核         已完成
    -------- ----------- ----------- ----------- -----------
    服务点二     6           4           2           0
    服务点三     4           2           0           2
    服务点四     4           0           2           2
    服务点一     8           0           2           6
    */