将列数据显示为行(创建动态SQL查询) [英] Show column data as row (create dynamic SQL query)
本文介绍了将列数据显示为行(创建动态SQL查询)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
1 20 p
2 30 p
3 40 r
4 50 r
1 60 q
2 70 q
3 80 s
4 90 s
1 20 r
2 42 r
3 52 p
4 25 p
1 25 跨度>取值
2 32 s
3 56 q
4 21 q
i想要显示这样的数据:
p q r s
1 20 60 20 25
2 30 70 42 32
3 52 56 40 80
4 25 51 50 90
我尝试了什么:
i必须使用但不知道怎么办。请帮忙。
解决方案
您好,
您必须使用PIVOT
才能获得所需的OP。
供参考:
在SQL查询中使用Pivot的简单方法
试试这个
创建 表 #tmp
(
srno int ,
val int ,
name varchar ( 10 )
)
insert into #tmp values ( 1 , 20 ,' p')
< span class =code-keyword> insert 进入 #tmp 值( 2 , 30 ,' p')
插入 进入 #tmp 值( 3 , 40 ,' r')
insert into #tmp values ( 4 , 50 ,' r')
insert into #tmp values ( 1 , 60 ,' q')
插入 进入 #tmp values ( 2 , 70 ,' q')
insert 到 #tmp 值( 3 , 80 ,' s')
insert into #tmp values ( 4 , 90 ,' s')
insert into #tmp 值( 1 , 20 ,' r')
插入 进入 #tmp 值( 2 , 42 ,' r')
insert into #tmp 值( 3 , 52 ,' p')
将 插入 #tmp 值( 4 , 25 ,' p')
insert into #tmp 值( 1 , 25 ,' s')
insert into #tmp values ( 2 , 32 ,' s')
插入 进入 #tmp 值( 3 , 56 ,' q')
insert 进入 #tmp 值( 4 , 21 ,' q')
select * 来自
(选择 srno,name,val 来自 #tmp)src
pivot
(min(val) for name in ([p], [q],[r],[s]))pv
和OP将是
< pre lang =C#> srno p qrs
1 20 60 20 25
2 30 70 42 32
3 52 56 40 80
4 25 21 50 90
谢谢
1 20 p
2 30 p
3 40 r
4 50 r
1 60 q
2 70 q
3 80 s
4 90 s
1 20 r
2 42 r
3 52 p
4 25 p
1 25 s
2 32 s
3 56 q
4 21 q
i want to show data like this:
p q r s
1 20 60 20 25
2 30 70 42 32
3 52 56 40 80
4 25 51 50 90
What I have tried:
i have to use but no any idea hows. please help.
解决方案
Hello ,
You have to usePIVOT
to get the required OP .
For reference :
Simple Way To Use Pivot In SQL Query
Try this
create table #tmp ( srno int , val int , name varchar(10) ) insert into #tmp values (1,20,'p') insert into #tmp values (2,30,'p') insert into #tmp values (3,40,'r') insert into #tmp values (4,50,'r') insert into #tmp values (1,60,'q') insert into #tmp values (2,70,'q') insert into #tmp values (3,80,'s') insert into #tmp values (4,90,'s') insert into #tmp values (1,20,'r') insert into #tmp values (2,42,'r') insert into #tmp values (3,52,'p') insert into #tmp values (4,25,'p') insert into #tmp values (1,25,'s') insert into #tmp values (2,32,'s') insert into #tmp values (3,56,'q') insert into #tmp values (4,21,'q') select * from (select srno , name , val from #tmp)src pivot (min(val) for name in ([p],[q],[r],[s]) ) pv
and OP will be
srno p q r s 1 20 60 20 25 2 30 70 42 32 3 52 56 40 80 4 25 21 50 90
Thanks
这篇关于将列数据显示为行(创建动态SQL查询)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文