当前位置:首页 » 编程语言 » sql单竖

sql单竖

发布时间: 2022-04-26 10:55:28

sql查询横转竖显示

--建立测试数据
create table tb1
(
id varchar(20) not null,
value varchar(20) not null
)
go

insert into tb1
select '1','aa'
union all
select '1','bb'
union all
select '2','aaa'
go
--由于你这表里没有主健,可以用来做标识用,可以先生成一个临时表,并加上自增字段px用来做唯一标识列
select px=IDENTITY(INT,1,1),id,value
INTO #temptb
from tb1
go
select * from #temptb
go
--动态SQL
declare @sql varchar(8000)
set @sql = 'select'
select @sql = @sql + ',max(case px when ' +CONVERT(varchar(4),px)+ ' then value else '''' end) [' + id + ']'
from (select * from #temptb) a
set @sql = STUFF(@sql,7,1,' ') + ' from #temptb'
exec(@sql)
go
--静态SQL
select max(case px when 1 then value else '' end) [1],
max(case px when 2 then value else '' end) [1],
max(case px when 3 then value else '' end) [2]
from #temptb
go
--删除测试数据
DROP TABLE #temptb
go
DROP TABLE tb1

返回:

(所影响的行数为 3 行)

(所影响的行数为 3 行)

px id value
1 1 aa
2 1 bb
3 2 aaa

(所影响的行数为 3 行)

1 1 2
aa bb aaa

1 1 2
aa bb aaa

(所影响的行数为 1 行)

❷ SQL 如何查询时 横着的数据 竖着显示

看你表结构是什么样的吧,最彻底的方法是把表结构就改成 姓名,科目,分数。如果表结构是 姓名,数学,语文,英语 不能变,又一定要显示成那样,就只好用union拼一下了,比如 select 姓名,'数学' as 科目,数学 as 分数 from 表 union select 姓名,'语文' as 科目,语文 as 分数 from 表 union select 姓名,'英语' as 科目,英语 as 分数 from 表。

❸ SQL中内容都为字符型的竖版表转横版,如何实现

Word默认为一节,而一节的页面格式是相同的,若想把一个WORD文件中的每一页随意设置成横版或是竖版,必须将其设置为单独一节,这样就可以单独设置了。
假设有一个10页文档,想让其中第3页为横板,设置步骤:
1、将光标放在第3的首位置,单击页面布局---->分隔符---->分节符---->下一页,如图所示;
2、将光标放在第3页的尾部,重复上面的操作上,使第3页成为单独一节;
3、光标放在第3页,单击页面布局---->纸张方向---->横向即可,如图所示。

❹ SQL 横排变竖排的问题

给例子远比你贴代码快,

SELECT name,
SUM(CASE subject WHEN '语文' THEN Result ELSE 0 END),
SUM(CASE subject WHEN '数学' THEN Result ELSE 0 END),
SUM(CASE subject WHEN '物理' THEN Result ELSE 0 END)
FROM tb
GROUP BY Name

❺ SQL 竖列 转换横列的问题

使用CASE来处理。

select 编号, sum( 第一季度第一次施肥量) 第一季度第一次施肥量, sum( 第一季度第二次施肥量) 第一季度第二次施肥量, sum( 第二季度第一次施肥量) 第二季度第一次施肥量
from
(
select 编号
case when 季度=1 and 施肥次数=1 then 施肥量 else null end 第一季度第一次施肥量,
case when 季度=1 and 施肥次数=2 then 施肥量 else null end 第一季度第二次施肥量,
case when 季度=2 and 施肥次数=1 then 施肥量 else null end 第二季度第一次施肥量
from 表
) a
group by a.编号

❻ 如何将sql语句搜索的结果进行横竖转换

我帮你找个demo

DROPTABLE#tb
createtable#tb([品号]int,[日期]varchar(5),[数量]int)
insert#tb
select1001,'06-08',11unionall
select1001,'06-09',12unionall
select1001,'06-10',13unionall
select1001,'06-11',14unionall
select1001,'06-12',15

DECLARE@sqlNVARCHAR(MAX),@colListNVARCHAR(MAX)
SET@colList=STUFF((SELECT','+QUOTENAME([日期])FROM#tbGROUPBY[日期]ORDERBY[日期]FORXMLPATH('')),1,1,'')
SET@sql=N'
select*from#tba
pivot
(max([数量])for[日期]in('+@colList+'))b
'
EXEC(@sql)

http://bbs.csdn.net/topics/390542752

❼ SQL中,有个竖杠表示意思如下第一行最右边,还有那个<>表示啥意思可以不要嘛

<>表示可选项,
|表示分隔,或者的意思
就是说上面一句话代表两句话,
ALTER TABLE table_name ADD column_name data_type;
ALTER TABLE table_name MODIFY column_name data_type;

❽ SQL数据横列变竖列

以下方法适用于任意多的科目:
--先建立函数,功能是根据给出的姓名,到表中去查找所选科目及成绩并横向列示出来.
CREATE FUNCTION getcoldata
(@XM VARCHAR(18))
RETURNS varchar(1000)
AS
BEGIN
DECLARE @deli VARCHAR(2)
set @deli=' '
declare @f1 varchar(100),@F2 DECIMAL(12,1),@result varchar(1000),@sn0 int
set @result=''
declare ddcursor cursor for select 选修科目,成绩 from 表名 where 姓名=@XM order by 选修科目
open ddcursor
fetch next from ddcursor into @f1,@F2
while @@fetch_status!=-1
begin
set @result=@result+@deli+isnull(@f1,'')+':'+ISNULL(CONVERT(VARCHAR,@F2),'')
fetch next from ddcursor into @f1,@F2
end
close ddcursor
deallocate ddcursor
return (@result)
end

GO

--使用方法:
select 姓名,科目及成绩=dbo.getcoldata(姓名) from (SELECT DISTINCT 姓名 from 表名) a

结果是这样的
姓名 科目与成绩
张三 计算机:75 高等数学:80 物理:77
李四 高等数学:55 微积分:87
王五 语文:78

=============
我这么看您的问题:
1.查询是用来输出的,不是用来统计的:您的这种结果即使用分开字段也是很不容易统计的,要想统计还是原表比较方便.
就是说:这种查询结果更方便输出\查看,原表更方便于作统计.
所以,我劝您,比较科学的作法是保留原表,可以方便的作出包括本查询在内的各种查询.而您如果只保留查询后的表,即使用字段是分开的,那么将很难再作其它统计和查询.因为数据太不规范.

2.可以输出各门分开的EXCEL表:如果您想输出到EXCEL表,您要以把函数中的分隔符改成逗点或制表符(CHAR(9)),直接存成CSV或XLS文档就成了.
3.完全按照您的结果也能输出.但今天我没空了,给你个提示:
先看看我以前的回答中,有一些是关于加序号的,加上序号后就好说了.
===========
加到200分,我就开始为您作分开字段的查询.(办法我知道,但是很麻烦啊)
===============================================
与您的要求完全相同的查询:
为了清楚,先建立一个查询,给每人的科目加序号,如果不理解,执行一下SELECT * FROM MYVIEWNAME就知道了:
=====================

视图改一下:
create view myviewname
as
select 姓名,科目,成绩,序号=(select count(1) from tablename a where a.姓名=b.姓名 and a.科目>=b.科目) from
(select * from tablename where 状态='有效') --以子查询替换了TABLENAME,够直观吧?
b --视图加上了序号字段
go

然后,这就是您要的查询,根据每人所选科目的最大数,可以无限向后延伸,加入科目6,科目7等:
select a.姓名,
科目1=isnull(t1.科目,''),
成绩1=isnull(t1.成绩,''),
科目2=isnull(t2.科目,''),
成绩2=isnull(t2.成绩,''),

科目3=isnull(t3.科目,''),
成绩3=isnull(t3.成绩,''),

科目4=isnull(t4.科目,''),
成绩4=isnull(t4.成绩,''),

科目5=isnull(t5.科目,''),
成绩5=isnull(t5.成绩,'')
from (SELECT DISTINCT 姓名 from tablename) a
left join myviewname t1 on t1.姓名=a.姓名 and t1.序号=1
left join myviewname t2 on t2.姓名=a.姓名 and t2.序号=2
left join myviewname t3 on t3.姓名=a.姓名 and t3.序号=3
left join myviewname t4 on t4.姓名=a.姓名 and t4.序号=4
left join myviewname t5 on t5.姓名=a.姓名 and t5.序号=5

好了,加到200分再选择正确答案!

❾ sql 里面怎么把竖表变成横表

SELECT 姓名
,'数学'=MAX(CASE 课程 WHEN '数学' THEN 分数 ELSE 0 END)
,'语文'=MAX(CASE 课程 WHEN '语文' THEN 分数 ELSE 0 END)
,'英语'=MAX(CASE 课程 WHEN '英语' THEN 分数 ELSE 0 END)
FROM TB
GROUP BY 姓名

--或者
SELECT 姓名,
,'数学'=SUM(CASE 课程 WHEN '数学' THEN 分数 ELSE 0 END)
,'语文'=SUM(CASE 课程 WHEN '语文' THEN 分数 ELSE 0 END)
,'英语'=SUM(CASE 课程 WHEN '英语' THEN 分数 ELSE 0 END)
FROM TB
GROUP BY 姓名

❿ SQL 如何查询时 竖着的数据 横着显示

你这个是将纵表转换为横表,例如如下数据:
'wangming', 'shuxue', 100
'wangming', 'yuwen', 90
'wangming', 'yingyu', 140

可以使用如下语句处理:
select a.v_name,a.v_score shuxue,b.v_score yuwen,c.v_score yingyu from temp_1 a,temp_1 b,temp_1 c
where a.v_name=b.v_name
and a.v_name=c.v_name
and a.v_name='wangming'
and a.v_course='shuxue'
and b.v_course='yuwen'
and c.v_course='yingyu';

热点内容
安卓手机如何变换桌面 发布:2025-05-16 13:39:33 浏览:514
sql存储过程命令 发布:2025-05-16 13:17:54 浏览:145
用纸做解压小玩具西瓜 发布:2025-05-16 13:04:09 浏览:935
局域网xp无法访问win7 发布:2025-05-16 13:03:58 浏览:942
油卡如何修改密码 发布:2025-05-16 13:00:35 浏览:901
安卓手机如何拼照片 发布:2025-05-16 12:58:23 浏览:374
深入浅出python 发布:2025-05-16 12:56:52 浏览:655
国二c语言vc2010怎么编译运行 发布:2025-05-16 12:53:49 浏览:424
华为热点哪里看密码 发布:2025-05-16 12:53:44 浏览:515
新手如何用java写安卓app 发布:2025-05-16 12:53:07 浏览:402