oracle单表的一个查询

来源:百度知道 编辑:UC知道 时间:2024/09/25 16:26:40
detail表
id memberid d_date price
1 001 20090101 1
2 001 20090102 2
3 003 20090105 2
4 002 20090201 3
5 001 20090202 1
6 003 20090301 4

查询结果 xx年x月(假设是1月的数据)
id 1号 2号 3号 ...(省略,一直到30号,也就是30列) 总价(sum(price))
001 1 2 (0 or null) 2
002 ... 0
003 ... 2 2

就是一个单表的交叉查询 但是结果要求格式 即使某天(比如2月10号)没数据
也需要罗列出来. 然后就是 group by memberid

不知道表达清楚没有,这个问题困扰几天了,有谁有好的方案

ps:复制粘贴流就免了,回答也不需要太多解释说明,你把sql语句放上(查询无数遍的也免了),只要正确我就给分.
badkano 的回答验证ing
稍等片刻,ok就结帖

select af.memberid,a.1号,b.2号,c.3号,d.4号,e.5号,f.6号,g.7号,h.8号,i.9号,j.10号,k.11号,l.12号,m.13号,n.14号,
o.15号,p.16号,q.17号,r.18号,s.19号,t.20号,u.21号,v.22号,w.23号,x.24号,y.25号,z.26号,aa.27号,ab.28号,ac.29号,ad.30号,ae.31号
from
(select memberid,sum(nvl(price,0)) 1号 from detail where d_date='20090101' group by memberid) a,
(select memberid,sum(nvl(price,0)) 2号 from detail where d_date='20090102' group by memberid) b,
(select memberid,sum(nvl(price,0)) 3号 from detail where d_date='20090103' group by memberid) c,
(select memberid,sum(nvl(price,0)) 4号 from detail where d_date='20090104' group by memberid) d,
(select memberid,sum(nvl(price,0)) 5号 from detail where d_date='20090105' group by memberid) e,
(select memberid,sum(nvl(price,0)) 6号 from detail where d_date='20090106' group by memberid) f,
(select memberid,sum(nvl(price,0)) 7号 from detail where d_date='20090107' group by memberid) g,
(select mem