2015-11-06 124 views
-1

我有一个MySQL表作为,忽略MySQL查询结果列空值

Name Month   Salary 
======================================= 
A Salary_Month_Sept 15000 
A Salary_Month_Oct 0 
B Salary_Month_Sept 12000 
B Salary_Month_Oct 0 
C Salary_Month_Sept 13000 
C Salary_Month_Oct 0 

,我查询该表作为

select Name, 
    max(IF(Month = 'Salary_Month_Sept', Salary, 0)) AS 'Salary_Month_Sept', 
    max(IF(Month = 'Salary_Month_Oct', Salary, 0)) AS 'Salary_Month_Oct' 
from myTable 

它返回查询结果

Name Salary_Month_Sept Salary_Month_Oct 
============================================= 
A  15000    0 
B  12000    0 
C  17000    0 

如何忽略上述查询结果中只包含零或空值的列。

+0

没有“逃跑”。数据库用于存储数据,而不是很好地格式化数据。在应用程序层执行此操作。 – fancyPants

+0

我的意思是忽略查询结果中的那一列 – mpsbhat

+0

是的,我明白这是正确的。我的评论依然存在。如果你不想要它,请不要选择它。就那么简单。 – fancyPants

回答

0

请勿使用*。命名您想要的列。查询不是水晶球。它不知道前面是否会有该列的数据。您需要的条件

  1. 选择总和(salary_sept),总和(salary_oct),...:做这样的事情,你需要2个查询,假设工资仅为正。

  2. 仅为返回大于零的和的列创建第二个选择。

SQL没有时间机器,对不起。你必须自己做你的工作。