2014-09-27 64 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; 

我想要结果是单个返回子查询。 例如:

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;