动态交叉查询.txt

来自「SQL语言常用的一些命令各代码」· 文本 代码 · 共 40 行

TXT
40
字号
有一个这样的结构:

Id  no value 
A   1   3
A   2   4
A   3   5
B   1   6
B   2   7
B   3   8
查询结果:
Id value1 value2 value3
A    3      4      5
B    6      7      8

查询语句怎么写

====================================================================

还有,给两个字段均相同的两个表t1,t2,字段假设为id,value; 
写一个语句找出t1表中id不在t2表中存在的id和value,不允许嵌套


/*测试数据*/
create table  #a ( id char(1),no int,value int)   /*源表*/
insert into #a select 'A',   1,   3
union all      select 'A',   2,   4
union all      select 'A',   3,   5
union all      select 'B',   1,   6
union all      select 'B',   2,   7
union all      select 'B',   3 ,  8
/*借助临时表改字段名*/
create table  #b(id char(1),no varchar(10),value int)
insert into #b select id,'value'+cast(no as varchar(1)),value from #a
/*动态查询*/
declare @str nvarchar(4000)
select @str=''
select @str=@str+','+quotename(no)+'=sum(case no when '+quotename(no,N'''')+' then value else 0 end)'
from #b group by no
exec('select id'+@str+'from #b group by id ')

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?