首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

sql有关问题 新手求教

2013-09-12 
sql问题 新手求教!本帖最后由 u011932802 于 2013-09-02 16:29:01 编辑数据表A格式如下:单位方式相关代号0

sql问题 新手求教!
本帖最后由 u011932802 于 2013-09-02 16:29:01 编辑 数据表A格式如下:
单位                方式             相关代号
0101                  2                 2
0102                  1                 1,3
0103                  3                 1,2,4
0102                  1                 2,3
0102                  2                 1,4
求查询语句,实现下边结果
单位 方式1的代号明细                 方式2的代号明细                        方式3的代号明细
0101                                             2  
0102   1,2,3                             1,4
0103                                                                                 1,2,4                                                                      


求sql代码。新手,请指教。
最好是简单的SELECT语句。请问是否可行?
[解决办法]

if OBJECT_ID('tempdb..#temp', 'u') is not null   drop table #temp;
go
create table #temp( [单位] varchar(100), [方式] varchar(100), [相关代号] varchar(100));
insert #temp
select '0101','2','2' union all
select '0102','1','1,3' union all
select '0103','3','1,2,4' union all
select '0102','1','2,3' union all
select '0102','2','1,4' 

--方法2:
select 
[单位], 
方式1的代号明细 =ISNULL(MAX(CASE [方式] WHEN '1' THEN [相关代号] END), ''), 
方式2的代号明细 =ISNULL(MAX(CASE [方式] WHEN '2' THEN [相关代号] END), ''), 
方式3的代号明细 =ISNULL(MAX(CASE [方式] WHEN '3' THEN [相关代号] END), '')
from #temp a
GROUP BY [单位]

/*
单位方式1的代号明细方式2的代号明细方式3的代号明细
01012
01022,31,4
01031,2,4
*/

热点排行
Bad Request.