你把屏幕旋转90°,或者你把脑袋横着屏幕也可以。
10年积累的成都做网站、网站建设经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先网站设计后付款的网站建设流程,更有巴宜免费网站建设让你可以放心的选择与我们合作。
不仅仅是 Oracle ,就目前人类已经创造的数据库而言,在显示习惯上,不管是屏幕还是纸质,横向显示列(Col),纵向显示行(Row),因为表的数据增减是沿着行(Row)的方向增减,而人们更习惯于纵向快速对比同一列的多行信息,而不善于横向对比同一行的多列信息。
大概可以猜到你希望构建一个数据结果视图,这个视图的列值是指定的某个月的全部日期,如果在最左边再加上几列,比如序号、名次、姓名,最右边再加上一列,比如总业绩,那么就可以用来展示该月全体销售人员的销售额以及排名。如果要实现类似需求,那么就努力构造你的 SQL 语句吧,虽然没有证据证明无法用 SELECT 语句实现,但似乎SELECT 必须制定列名,即使你使用 * 那也代表的是所有列。如果配合程序语言,那么实现起来就很简单。你可以试试存储过程,动态创建表,直接构造你需要的列,然后 SELECT * 即可。
上个世纪出现计算机屏幕的时候,屏幕显示就是纵向滚屏,横向从来没动过,至今人们已经习惯了屏幕纵向滚动,因为大多数语言文字都是横向排版比较适合人们的阅读习惯,纵向阅读确实费劲。如果最初屏幕是横向滚动的,那么现在情况也许就截然不同了。
顺便说一下,阅读横向排版的纸质或电子版的中文书籍,页面较宽而字符较小行距较小的时候,容易找错下一行。阅读英文则很少有此情况,这也许是方块字与长短英文单词的区别?阅读台湾出版的纵向排版的中文书籍,刚开始不习惯,后来觉得确实比横向排版有优势。比如,你单手把书翻卷起来,阅读到接近中缝的文本时,不需要反复以书脊为轴转动书本,阅读很方便。而如果是横排,那么你看到接近中缝的几个字之后,需要转动书本再去找举例中缝最远的下一行,很容易就找错了。也许,如果计算机最初是台湾人发明的,那么现在鼠标中间那个滚轮就应该是横着的,电脑屏幕也是横向滚动,而纵向基本不动了。看看下面这段纵向文字,舒服不?
假设表有A,B两列,代码如下
select A,LISTAGG(B, ',') WITHIN GROUP(ORDER BY B) B from table group by A
上面SQL文可将B列横向输出,以逗号分割,输出顺序按B的值升序排列
你把屏幕旋转90°,或者你把脑袋横着屏幕也可以。
不仅仅是 Oracle ,就目前人类已经创造的数据库而言,在显示习惯上,不管是屏幕还是纸质,横向显示列(Col),纵向显示行(Row),因为表的数据增减是沿着行(Row)的方向增减,而人们更习惯于纵向快速对比同一列的多行信息,而不善于横向对比同一行的多列信息。
大概可以猜到你希望构建一个数据结果视图,这个视图的列值是指定的某个月的全部日期,如果在最左边再加上几列,比如序号、名次、姓名,最右边再加上一列,比如总业绩,那么就可以用来展示该月全体销售人员的销售额以及排名。如果要实现类似需求,那么就努力构造你的 SQL 语句吧,虽然没有证据证明无法用 SELECT 语句实现,但似乎SELECT 必须制定列名,即使你使用 * 那也代表的是所有列。如果配合程序语言,那么实现起来就很简单。你可以试试存储过程,动态创建表,直接构造你需要的列,然后 SELECT * 即可。
上个世纪出现计算机屏幕的时候,屏幕显示就是纵向滚屏,横向从来没动过,至今人们已经习惯了屏幕纵向滚动,因为大多数语言文字都是横向排版比较适合人们的阅读习惯,纵向阅读确实费劲。如果最初屏幕是横向滚动的,那么现在情况也许就截然不同了。
顺便说一下,阅读横向排版的纸质或电子版的中文书籍,页面较宽而字符较小行距较小的时候,容易找错下一行。阅读英文则很少有此情况,这也许是方块字与长短英文单词的区别?阅读台湾出版的纵向排版的中文书籍,刚开始不习惯,后来觉得确实比横向排版有优势。比如,你单手把书翻卷起来,阅读到接近中缝的文本时,不需要反复以书脊为轴转动书本,阅读很方便。而如果是横排,那么你看到接近中缝的几个字之后,需要转动书本再去找举例中缝最远的下一行,很容易就找错了。也许,如果计算机最初是台湾人发明的,那么现在鼠标中间那个滚轮就应该是横着的,电脑屏幕也是横向滚动,而纵向基本不动了。看看下面这段纵向文字,舒服不?
怎
样
把
一
个
月
的
日
期
转
换
成
横
向
分
布
?
扯远了,自己构建临时动态表吧,或者在程序中构建动态视图。
先给你上个笨办法,适用于你的行数是固定的,你看下就明白了。也就是条目(FEETYPENAME)是固定的。
SELECT
POLICYNO,
max(decode(FEETYPECODE, '000', FEERATE)) AS 佣金,
max(decode(FEETYPECODE, '001', FEERATE)) AS 绩效,
max(decode(FEETYPECODE, '005', FEERATE)) AS 团队费用,
max(decode(FEETYPECODE, '004', FEERATE)) AS 运营费用,
max(decode(FEETYPECODE, '007', FEERATE)) AS 激励费用,
max(decode(FEETYPECODE, '009', FEERATE)) AS 调整佣金
FROM 你的表名
GROUP BY POLICYNO
如果行数不是固定的,可能需要写一个过程来实现。或者分析函数。
你先看看这种行不行。
行的话明天再采纳吧。
通用的 行专列很复杂。
建议先确定 哪些课程号 select distinct 课程号from score 。
然后可以参照代码:
select 学号, sum(decode(课程号,1,分数,0))课程1分数,
sum(decode(课程号,2,分数,0))课程2分数,
sum(decode(课程号,3,分数,0))课程3分数,
.......
from score
group by 学号
select 编号,姓名,SUM(CASE WHEN 科目='语文' THEN 成绩 END) 语文,
SUM(CASE WHEN 科目='数学' THEN 成绩 END) 数学,
SUM(CASE WHEN 科目='英语' THEN 成绩 END) 英语
from 表 GROUP BY 编号,姓名