当前位置: 代码迷 >> Sql Server >> 这种条件用sqlserver语句如何写,要用子查询么
  详细解决方案

这种条件用sqlserver语句如何写,要用子查询么

热度:20   发布时间:2016-04-27 14:30:35.0
这种条件用sqlserver语句怎么写,要用子查询么
AA BB CC DD --字段名
1 1 a A  
1 1 a B  
1 1 b A -------------------------这边是用sql语句写、
1 1 b C  
2 2 a C
2 2 a B
变成
AA BB A B C
1 1 a a -
1 1 b - b  
2 2 - a a

上次问问题别人的回答,我没说清楚,下面的语句就是CC,DD字段的数据是已知的,可是我要的是CC,DD字段用sql语句查询出来后再变成我要的那种显示方式。
select AA,
A=max(case when CC='A' then BB else '-' end),  
B=max(case when CC='B' then BB else '-' end),  
C=max(case when CC='C' then BB else '-' end)  
from @t group by AA,BB order by 1



------解决方案--------------------
SQL code
create table tb(AA int,BB varchar(1),CC varchar(1))insert into tbselect 1,'a','A' union allselect 1,'a','B' union allselect 1,'b','A' union allselect 1,'b','C' union allselect 2,'a','C' union allselect 2,'a','B'declare @sql varchar(8000)set @sql='select AA, 'select @sql=@sql+'max(case when CC='''+ltrim(CC)+''' then BB else ''-'' end) as '+ltrim(CC)+','from (select distinct CC from tb) aset @sql=left(@sql,len(@sql)-1)+' from tb group by AA,BB order by 1'exec(@sql)/*AA          A    B    C----------- ---- ---- ----1           a    a    -1           b    -    b2           -    a    a*/
  相关解决方案