2011-03-29 86 views
0

我有问题。 如果我有一个表(ORDER)让我们说这是这样的。从不同的结果集和不同的条件创建表

ORDER 

typeid | price | status | 
    7  8000  3 
    7  8000  3 
    7  8000  3 
    8  8000  3 
    8  8000  8 
    7  8000  8 

我想获得从上述表3的结果:

select count(STATUS) AS TRAFFIC WHERE TYPEID = 7; 

sum(price) AS REVENUE, count(STATUS) AS SUBSCRIBER FROM CMSORDER WHERE TYPEID = 7 AND status = 8 ; 

什么是结合上述2代码的语法?所以我可以得到这张表:

traffic | revenue | subscriber 
    4   8000   1 

任何人都可以帮我吗?

回答

0

你正在寻找神奇的是在GROUP BY子句:

select count(ORDER.STATUS) AS TRAFFIC 
sum(ORDER.price) AS REVENUE, 
count(ORDER.STATUS) AS SUBSCRIBER 
FROM CMSORDER, ORDER 
WHERE CMSORDER.TYPEID = ORDER.TYPEID 
AND CMSORDER.status = 8 
AND ORDER.TYPEID = 7 
GROUP BY ORDER.STATUS; 
0

按照我的理解可以是这样的 -

SELECT count(if(typeid = 7, 1, null)) TRAFFIC, 
    sum(if(TYPEID = 7 AND status = 8, price, null)) AS REVENUE, 
    count(if(TYPEID = 7 AND status = 8, STATUS, null)) AS SUBSCRIBER 
FROM 
    CMSORDER 
0
SELECT 
    COUNT(status) AS TRAFFIC, 
    SUM (CASE status WHEN 8 THEN price END) AS REVENUE, 
    COUNT(CASE status WHEN 8 THEN status END) AS SUBSCRIBER 
FROM CMSORDER 
WHERE typeid = 7