读书人

这种条件用sqlserver语句如何写要用

发布时间: 2012-04-06 12:22:24 作者: rapoo

这种条件用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*/ 

读书人网 >SQL Server

热点推荐