2016-02-03 35 views
-1
Select SUM(Breakfast) FROM `expense` WHERE MONTHNAME(Date)='February' 

Select (BreakFast+lunch+dinner) as Total FROM `expense` WHERE Date='2016-01-01' 

合并结果取决于条件。查询合并两个结果取决于条件

  1. SUM(Breakfast)如果是2月份,应该选择。

如果不是意味着

  • (BreakFast+lunch+dinner) as Total必须加油特定日期。
  • 我尝试了联盟,但我没有得到期望的结果

    Table expense 
    -------------- 
    Date  Breakfast Lunch Dinner 
    2016-02-02 20 20 30 
    2016-02-03 30 30 20 
    2016-01-02 40 30 20      90(If It is a month Of Not a Feb)   
    
    
    
    
          50(If It is a month Of Feb) 
          -------------------------- 
    
    +0

    的MySQL或SQL Server?你已经标记了他们两个。 – Fred

    +0

    不知道问题是什么。 – shawnt00

    回答

    1

    使用UNION ALL:

    Select SUM(Breakfast) as Total FROM `expense` WHERE month(Date)=2 
    union all 
    Select Sum(BreakFast)+sum(lunch)+sum(dinner) as Total FROM `expense` WHERE month(Date)<>2 
    

    使用案例(最快的选项):

    SELECT CASE 
    WHEN MONTH(DATE)=2 THEN SUM(Breakfast) 
    WHEN MONTH(DATE)<>2 THEN SUM(BreakFast)+SUM(lunch)+SUM(dinner) 
    ELSE 0 END 
    AS Total FROM `expense` 
    
    +0

    谢谢它的工作精细 –

    +0

    @AmareshHD欢迎 –

    +0

    这很有可能是一个'case'表达式比union更快。 – shawnt00