一个有趣的Sql查询
假定我们现在有一个员工销售业绩表,如图所示:
现在因为某种需要,要做一个如下格式的报表:
![](/images/cnblogs_com/chinadhf/table2.gif)
但问题的关键是:对于一个员工来说,可能同时有2005年和2006年的销售额,但也可能只有2005年或只有2006年的销售额,这个Sql查询应如何生成呢?
用full outer jion或许是一个选择,但合并employeeId列也是一个不小的麻烦,以下是我用另一种方法写的一个Sql查询语句:
select employeeId,sum(sale2005) as sale2005,sum(sale2006) as sale2006 from
(
(select employeeId,sale as sale2005,null as sale2006 from sale where years=2005)
union
(select employeeId,null as sale2005,sale as sale2006 from sale where years=2006)
) tmp
group by employeeId功能是实现了,但总感觉不够爽。不知大家有没有高招,希望贡献出来大家一起学习。
![](/images/cnblogs_com/chinadhf/table1.gif)
现在因为某种需要,要做一个如下格式的报表:
![](/images/cnblogs_com/chinadhf/table2.gif)
但问题的关键是:对于一个员工来说,可能同时有2005年和2006年的销售额,但也可能只有2005年或只有2006年的销售额,这个Sql查询应如何生成呢?
用full outer jion或许是一个选择,但合并employeeId列也是一个不小的麻烦,以下是我用另一种方法写的一个Sql查询语句:
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)