我有个数据库,以前做的,但现在想在不改动表的情况下做个统计,但是不知道怎么解决,请大虾们帮帮忙,谢谢!状态1  状态1的数量 状态2 状态2的数量  状态3 状态3的数量  登记者  使用年限  登记日期
 A         1        B        2                            P       15       2004-10-14
 B         1                                              Z       10       2003-08-15
 C         5        A        3                            P       13       2004-01-25
 
比如有如上一表,我想按登记者统计出状态 A B C 各多少数量,怎么写这个SQL语句?结果
登记者   状态     数量
 P        A        4
          B        2         
          C        5
 Z        B        1

解决方案 »

  1.   

    SELECT 登记者,状态,SUM(数量) AS 数量
    FROM
    (SELECT 登记者,状态1 AS 状态,SUM(状态1的数量) AS 数量 FROM TBL GROUP BY 登记者,状态1
    UNION ALL
    SELECT 登记者,状态2 AS 状态,SUM(状态2的数量) AS 数量 FROM TBL GROUP BY 登记者,状态2
    UNION ALL
    SELECT 登记者,状态3 AS 状态,SUM(状态3的数量) AS 数量 FROM TBL GROUP BY 登记者,状态3
    ) GROUP BY 登记者,状态;
      

  2.   

    谢谢,成功了,对了,能不能附加个问题? 如果我登记者是在另外一个TBL2里,用USER_ID同这个表里的登记者连接怎么做?我这个表里显示的登记者是个数字的,呵呵
      

  3.   

    SELECT B.登记者,A.状态,A.数量
    FROM (
    SELECT 登记者,状态,SUM(数量) AS 数量
    FROM
    (SELECT 登记者,状态1 AS 状态,SUM(状态1的数量) AS 数量 FROM TBL GROUP BY 登记者,状态1
    UNION ALL
    SELECT 登记者,状态2 AS 状态,SUM(状态2的数量) AS 数量 FROM TBL GROUP BY 登记者,状态2
    UNION ALL
    SELECT 登记者,状态3 AS 状态,SUM(状态3的数量) AS 数量 FROM TBL GROUP BY 登记者,状态3
    ) GROUP BY 登记者,状态
    ) A,TBL2 B
    WHERE A.登记者=B.USER_ID;