oracle-把行结果显示在列上面

(1):需求

select  * from  zhanggh_pd_serial2

    assetid   assettype name  propertycode   fileid  pathname

1 1660643 1101 叮当猫 Poster 24125922 d09082700360003000.JPG
2 1660643 1101 叮当猫 BigPhoto 24125918 d09082700360001000.JPG
3 1660643 1101 叮当猫 OplusPhoto 24125920 d09082700360002000.JPG
4 1660643 1101 叮当猫 SmallPhoto 24125924 d09082700360004000.JPG

现在要以 assetid   assettype name   列显示

 

(2):解决 使用oracle的 max(decode )来解决----

select  t2.assetid 资产ID ,t2.assettype 资产类型,t2.name 片名,
max(decode (t2.propertycode,'Poster',t2.propertycode,null)) Poster ,max(decode(t2.propertycode,'Poster',t2.pathname,null)) 大海报,
max(decode (t2.propertycode,'BigPhoto',t2.propertycode,null)) BigPhoto ,max(decode(t2.propertycode,'BigPhoto',t2.pathname,null))大图片,
max(decode (t2.propertycode,'SmallPoster',t2.propertycode,null)) SmallPoster ,max(decode(t2.propertycode,'SmallPoster',t2.pathname,null)) 小海报,
max(decode (t2.propertycode,'SmallPhoto',t2.propertycode,null)) SmallPhoto ,max(decode(t2.propertycode,'SmallPhoto',t2.pathname,null)) 小图片
from zhanggh_pd_serial2 t2
group by  t2.assetid,t2.assettype,t2.name

--------------------------------------------------------------------------

 assetid assettype name Poster   大海报 BigPhoto 大图片  SmallPoster  小海报  SmallPhoto  小图片

1660643 1101 叮当猫 Poster d09082700360003000.JPG BigPhoto d09082700360001000.JPG   SmallPhoto d09082700360004000.JPG

 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/15713890/viewspace-669687/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/15713890/viewspace-669687/

Oracle 中,可以使用 `CONNECT BY` 子句来实现按年计算结果,并将结果显示在一中。`CONNECT BY` 子句用于查询分层数据,它可以根据某个的值来构建数据层次结构。我们可以使用 `CONNECT BY` 子句来构建一个包含所有年份的数据层次结构,然后使用 `LEFT JOIN` 子句将结果与原始数据集连接起来。 例如,假设我们有一个名为 `my_table` 的表,其中包含 `year` 和 `value` 两数据,我们可以按照以下步骤实现按年计算结果,并将结果显示在一中: 1. 构建包含所有年份的数据层次结构。可以使用以下查询语句: ``` SELECT LEVEL + 2000 - 1 AS year FROM dual CONNECT BY LEVEL <= 10; ``` 这个查询将会返回从 2000 年到 2009 年的年份数据,其中 `LEVEL` 是 `CONNECT BY` 子句生成的层次结构的层数。 2. 在原始数据集和包含所有年份的数据集之间执 `LEFT JOIN` 子句。可以使用以下查询语句: ``` SELECT all_years.year, COALESCE(my_table.value, 0) AS value FROM ( SELECT LEVEL + 2000 - 1 AS year FROM dual CONNECT BY LEVEL <= 10 ) all_years LEFT JOIN my_table ON all_years.year = my_table.year ORDER BY all_years.year; ``` 这个查询将会返回所有年份的数据,其中 `COALESCE` 函数用于将空值转换为 0,以保证每一的结果都会显示。 需要注意的是,上面的查询语句中使用了 `COALESCE` 函数来将空值转换为 0,这可能会影响到结果的正确性。如果需要将空值显示为 `NULL`,可以使用 `NVL` 函数来代替 `COALESCE` 函数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值