将列数据显示为行(创建动态SQL查询) [英] Show column data as row (create dynamic SQL query)

查看:63
本文介绍了将列数据显示为行(创建动态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 use PIVOT 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆