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

【提问】一个行转列问题,有点难度
人员信息表:A
人员Id        人员名称
  1            李四
  2            张三
......................


人员拥有卡片表:B
人员Id     卡片Id    卡片号码
1          001      1234
1          002      12345
1          003      123456
2          004      2345
2          005      23456
..........................


需要以下结果:
人员Id    卡片1    卡片2    卡片3    卡片4  ....    卡片N
1         1234    12345   123456   null  null    ...
2         2345    23456   null     null  null    ..
..................................................          

------解决方案--------------------
----------------------------------------------------------------
-- Author  :DBA_Huangzj(發糞塗牆)
-- Date    :2013-12-16 11:11:07
-- Version:
--      Microsoft SQL Server 2012 (SP1) - 11.0.3128.0 (X64) 
-- Dec 28 2012 20:23:12 
-- Copyright (c) Microsoft Corporation
-- Enterprise Edition (64-bit) on Windows NT 6.2 <X64> (Build 9200: )
--
----------------------------------------------------------------
--> 测试数据:[A]
if object_id('[A]') is not null drop table [A]
go 
create table [A]([人员Id] int,[人员名称] varchar(4))
insert [A]
select 1,'李四' union all
select 2,'张三'
--> 测试数据:
if object_id('[B]') is not null drop table [B]
go 
create table [B]([人员Id] int,[卡片Id] varchar(3),[卡片号码] int)
insert [B]
select 1,'001',1234 union all
select 1,'002',12345 union all
select&nb