请问,怎样把数据库里面的行转换成固定列数?谢谢

qq_35962533 2016-08-25 01:26:11
存在数据库里面的表是这样的:



需要读取出来展现的格式是:
...全文
295 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
zbdzjx 2016-08-25
  • 打赏
  • 举报
回复
引用 6 楼 qq_35962533 的回复:
[quote=引用 5 楼 zbdzjx 的回复:] 如果用C#,那就for循环读,写10条一换行,或是商品编号变了,也换行。
能否写个实例我,非常感谢 用SQL语句写不 出来了吗?[/quote] 噢, 要SQL语句啊。
with table1(num, cnt) as
(
select 'A001', 90 union all
select 'A001', 99 union all
select 'A001', 99 union all
select 'A001', 100 union all
select 'A001', 101 union all
select 'A001', 80 union all
select 'A001', 80 union all
select 'A001', 80 union all
select 'A001', 88 union all
select 'A001', 88 union all
select 'A001', 97 union all
select 'A001', 90 union all
select 'A002', 100 union all
select 'A002', 101 union all
select 'A002', 102 union all
select 'A002', 102 union all
select 'A002', 100 union all
select 'A002', 101
)
, table2 as
(
select num, cnt, ROW_NUMBER() over(partition by num order by getdate())-1 rn from table1
)
select 
num
,MAX(case when rn%10=0 then cnt end)cnt1
,MAX(case when rn%10=1 then cnt end)cnt2
,MAX(case when rn%10=2 then cnt end)cnt3
,MAX(case when rn%10=3 then cnt end)cnt4
,MAX(case when rn%10=4 then cnt end)cnt5
,MAX(case when rn%10=5 then cnt end)cnt6
,MAX(case when rn%10=6 then cnt end)cnt7
,MAX(case when rn%10=7 then cnt end)cnt8
,MAX(case when rn%10=8 then cnt end)cnt9
,MAX(case when rn%10=9 then cnt end)cnt10
from table2 
group by num,rn/10
order by num, rn/10
redshiliu 2016-08-25
  • 打赏
  • 举报
回复
引用 4 楼 qq_35962533 的回复:
这个例子好像实现不了,我需要的是:数据库里面的行数没限制,但是转换后的列数不能超过10个,超过后往下显示;
纯用语句搞起来太麻烦了,不如先行转列查询出来再C#中显示时进行处理。
qq_35962533 2016-08-25
  • 打赏
  • 举报
回复
引用 5 楼 zbdzjx 的回复:
如果用C#,那就for循环读,写10条一换行,或是商品编号变了,也换行。
能否写个实例我,非常感谢 用SQL语句写不 出来了吗?
zbdzjx 2016-08-25
  • 打赏
  • 举报
回复
如果用C#,那就for循环读,写10条一换行,或是商品编号变了,也换行。
qq_35962533 2016-08-25
  • 打赏
  • 举报
回复
这个例子好像实现不了,我需要的是:数据库里面的行数没限制,但是转换后的列数不能超过10个,超过后往下显示;
redshiliu 2016-08-25
  • 打赏
  • 举报
回复
引用 2 楼 redshiliu 的回复:
pivot获取自己组织case when语句
或者
redshiliu 2016-08-25
  • 打赏
  • 举报
回复
pivot获取自己组织case when语句
  数据库操作是软件业人员必备的技能,这门视频教学课程主要是针对从事软件技术的新人的,适合在校大学生、准备转到IT业的新人、软件公司新入职员工。这门课程主要涉及Oracle数据库的基础操作和SQL语法,因为绝大部分软件技术人员掌握这些就可以了,数据库的大部分功能,我们平时是用不到的,所以不用花太多时间去研究。把这门课程里面的内容学会,足以胜任日常性数据库相关的工作。  这门视频教学课程不是针对DBA的培训课程,从事DBA工作的人在软件业人员的占比不高,就业面不太广,有做DBA志向的同学可以到专门的培训机构学习Oracle的OCA、OCP、OCM课程,他们有针对应试的培训内容,他们也可以安排相应的考试,考试通过后会有相应的证书,这门课程更偏向编程应用,不是面向Oracle认证考试的。   我对Oracle数据库有十几年的使用经验,我们公司的数据库是Oracle数据库,基本上每天的编程工作都要写SQL语句,公司的历史数据比较多,需要通过编写SQL语句来进查询处理,有两年时间,我的工作就是编写Oracle数据库的存储过程。  这个视频教学课程使用Oracle 19c版本的数据库讲解。每节课程都结合工作实际,都是干货,都经过认真准备,相信可以给大家带来很大帮助。

110,571

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧