请教个“数据填充”之类的问题……
比如一批居民信息,
姓名:××× 楼号:×× 楼层:× 单元:×× ×××室
如何得到如下结果:
按照楼号,楼层、单元、门牌等排序列出所有居民信息,如缺少某户信息,
则填充个空记录……
如:
姓名××× 楼号:22 楼层:1 单元:1 101
姓名××× 楼号:22 楼层:1 单元:1 102
姓名××× 楼号:22 楼层:1 单元:1 103
姓名... 楼号:22 楼层:2 单元:1 201(无此记录,自动填充空记录或显示为空结果行)
姓名××× 楼号:22 楼层:2 单元:1 202
姓名××× 楼号:22 楼层:2 单元:1 203
姓名××× 楼号:22 楼层:3 单元:1 301
姓名××× 楼号:22 楼层:3 单元:1 302
姓名××× 楼号:22 楼层:3 单元:1 303
------解决方案----------------------try
select B.姓名, A.* from
(
select 楼号=22, 楼层=1, 单元= '1 101 '
union all select 22, 1, '1 102 '
)as A
left join 居民信息表 as B on A.楼号=B.楼号 and A.楼层=B.楼层 and A.单元=C.单元
--先生成一个楼层单元信息结果表,再左关联居民信息表
------解决方案--------------------select isnull(姓名, ' '),
case when 姓名= ' ' then ' ' else 楼号 end,
case when 姓名= ' ' then ' ' else 楼层 end,
case when 姓名= ' ' then ' ' else 单元 end
from tablename
order by 楼号,楼层,单元,门牌
------解决方案--------------------如果有完整的 楼号、楼层、单元 的对照表,简单,Left JOIN 就可以
如果没有,能不能用以下这些规则来判断:
1、楼号(1、2、3。。。n)、楼层(1、2。。F)、单元(101、102、...F01、F02、F0X) 都是连续的?
2、如果不连续,能不能如下判断:
a.只需要补充 出现过的楼号、楼层;
b.同一座楼,不同层房间数一样?
如果可以的话,那么,可以根据每座楼中出现过的房间号(不包含楼层号),来关联出所有楼层的房间