动态交叉查询.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 + -
显示快捷键?