2012-07-23 67 views
0

我質疑的表用下面的查詢SQL:基於列的值嵌套查詢

select content_type_code_id 
    , price 
    , count(price) AS PRICECOUNT 
from dbo.transaction_unrated 
where transaction_date >= '2012/05/01' 
    and transaction_date < '2012/06/01' 
    and content_provider_code_id in (1) 
group by content_type_code_id, price 
ORDER BY price ASC 

產生以下結果集

content_type_code_id price PRICECOUNT 
1      -1.99  1 
1      -0.99  1 
1      0.99  178 
1      1.99  786 

但我想設置這樣的結果:

content_type_code_id price Debits Credits 
1      0.99  178  1 
1      1.99  786  1 

(負價格爲信貸和積極的價格作爲借方)

回答

0

試試這個

select content_type_code_id 
    , ABS(price) 
    , count(IF(price >= 0,1,null)) AS debits, 
    , count(IF(price < 0,1,null)) AS credits, 
from dbo.transaction_unrated 
where transaction_date >= '2012/05/01' 
    and transaction_date < '2012/06/01' 
    and content_provider_code_id in (1) 
group by content_type_code_id, ABS(price) 
ORDER BY price ASC 
0

試試這個:

SELECT content_type_code_id 
    , price * -1 
    , COUNT(price) AS PRICECOUNT 
    , (
      SELECT COUNT (deb.price) 
      FROM dbo.transaction_unrated deb 
      WHERE deb.transaction_date >= '2012/05/01' 
      AND deb.transaction_date < '2012/06/01' 
      AND deb.content_provider_code_id IN (1) 
      AND deb.price = (dbo.transaction_unrated.price * -1) 
     ) 
    FROM dbo.transaction_unrated 
    WHERE transaction_date >= '2012/05/01' 
    AND transaction_date < '2012/06/01' 
    AND content_provider_code_id IN (1) 
    AND price < 0 
    GROUP BY content_type_code_id 
     , price 
     , 4 
    ORDER BY price ASC