这种条件用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
[解决办法]
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*/