0

我使用以下查询查询了一个表

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

(负价为贷方,正价为借方)

4

2 回答 2

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
于 2012-07-23T19:09:07.710 回答
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
于 2012-07-23T19:18:45.563 回答