日期:2014-05-17  浏览次数:20558 次

怎样在SQL中实现这类查询?
表:
地址      姓名         孩子数       出生时间        死亡时间
河北      张三         第一个       1980年9月
河北      张三         第二个       1983年2月       1984年1月
河北      张三         第三个       1987年6月
湖北      李四         第一个       1983年6月
河南      张天         第一个       2001年9月       2001年11月
河南      张天         第二个       2004年7月       
河南      张天         第三个       2006年2月 
怎样实现查询结果为:
地址   姓名    孩子数   出生时间    孩子数   出生时间  孩子数  出生时间  
河北  张三     第一个   1980年9月   第二个   1987年6月
湖北  李四     第一个   1983年6月
河南  张天     第一个   2004年7月   第二个   2006年2月

也就是说排除死亡人口后,其他人员前移一下,在SQL2008中怎样实现这样的查询了??

------解决方案--------------------
引用:
如果第二个孩子死亡,怎样将第三个孩子的信息放到第二个孩子的信息上了?

row_number() over(pardition by 地址,姓名 order by 出生时间)这个从新排序,然后再用case when 转换..然后再转换