我有一个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 :(得分:0)
不要使用*。命名您想要的列。查询不是一个水晶球。它在前面不知道是否有该列的数据。要做这样的事情你需要2个查询,假设工资只是正数:
为您需要的条件选择总和(salary_sept),总和(salary_oct),....
仅为返回sum大于零的列创建第二个选择。
SQL没有时间机器,抱歉。你必须自己做你的工作。