2014-09-27 2 views
0

У меня есть следующая процедура Mysql.MySql получить несколько строк в одной строке

select 

case temp.lineItemTypeID when 1 then temp.tt else 0 end case as planTotalAmount, 
case temp.lineItemTypeID when 2 then temp.tt else 0 end case as discountTotalAmount 

from (

SELECT 
    lineItemTypeID, 
    sum(lineitemAmount) as tt from tbl_invoicelineitem 
    where date(lineItemcreatedDate) IS NOT NULL 
    group by lineItemTypeID 
) temp; 

Я хочу, чтобы результаты были одиночными, что возвращает по запросу. Ex:

planTotalAmount | discountTotalAmount 
10    | 2     ` 

, но я получаю

planTotalAmount | discountTotalAmount 
10    | 0     
0     | 2     ` 

Как исправить это?

ответ

1

агрегировать case...end выражения:

select 
    sum(case temp.lineItemTypeID when 1 then temp.tt else 0 end case) as planTotalAmount, 
    sum(case temp.lineItemTypeID when 2 then temp.tt else 0 end case) as discountTotalAmount 
from (
     SELECT 
      lineItemTypeID, 
      sum(lineitemAmount) as tt 
     from tbl_invoicelineitem 
     where date(lineItemcreatedDate) IS NOT NULL 
     group by lineItemTypeID 
    ) temp; 
Смежные вопросы