求:PL-Sql语句

OracleInfo 2008-07-03 06:02:37
表1
FID 出访时间(FDate) 出访国家(FContory)
01 2008-7-1 美国
02 2002-2-6 英国
... ...
表2
FGUID FID 人员姓名(FNAME)
1 01 a
2 01 b
3 02 a
... ...

统计结果

列名称

姓名 2008 2002 次数
a 美国 英国 2
b 英国 1

注:统计结果“出访年份”为活动项 列出出访时间的年份 现有数据为 2008,2002年
...全文
105 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
hebo2005 2008-07-07
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 hebo2005 的回复:]
引用 4 楼 hebo2005 的回复:
1楼的,其实一层sql就行了
max(DECODE(TO_CHAR(A.FDATE,'YYYY'),'2002',A.FCOUNTRY)) "2002"

不定列,可以参考我贴的链接里失踪的月亮写的包,按一楼语句动态拼接出来,再执行

贴错地方了
[/Quote]
没贴错,看错了
hebo2005 2008-07-07
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 hebo2005 的回复:]
1楼的,其实一层sql就行了
max(DECODE(TO_CHAR(A.FDATE,'YYYY'),'2002',A.FCOUNTRY)) "2002"

不定列,可以参考我贴的链接里失踪的月亮写的包,按一楼语句动态拼接出来,再执行
[/Quote]
贴错地方了
hebo2005 2008-07-07
  • 打赏
  • 举报
回复
1楼的,其实一层sql就行了
max(DECODE(TO_CHAR(A.FDATE,'YYYY'),'2002',A.FCOUNTRY)) "2002"

不定列,可以参考我贴的链接里失踪的月亮写的包,按一楼语句动态拼接出来,再执行
hebo2005 2008-07-06
  • 打赏
  • 举报
回复
估计还是不符合楼主的意思,看楼主的数据,估计多数是不固定的行列转换
参考此贴吧
http://topic.csdn.net/u/20080416/11/910e40c1-60f1-441f-8b0f-19a969d30f77.html
jadeyu 2008-07-06
  • 打赏
  • 举报
回复
高手呀?
fxianxian 2008-07-04
  • 打赏
  • 举报
回复
SQL> with a as (select '01' fid,TO_DATE('2008-7-1','YYYY/MM/DD') fdate,'美國' FCOUNTRY FROM DUAL
2 UNION
3 select '02' fid,TO_DATE('2002-2-6','YYYY/MM/DD') fdate,'英國' FCOUNTRY FROM DUAL),
4 B AS (SELECT 1 FGUID,'01' FID,'A' FNAME FROM DUAL
5 UNION
6 SELECT 2 FGUID,'01' FID,'B' FNAME FROM DUAL
7 UNION
8 SELECT 3 FGUID,'02' FID,'A' FNAME FROM DUAL
9 )
10 SELECT FNAME 姓名,MAX("2008") "2008",MAX("2002") "2002",MAX(RN) 次數 FROM
11 (SELECT B.FNAME,COUNT(B.FID)OVER(PARTITION BY B.FNAME ORDER BY B.FNAME) RN,
12 DECODE(TO_CHAR(A.FDATE,'YYYY'),'2002',A.FCOUNTRY) "2002",
13 DECODE(TO_CHAR(A.FDATE,'YYYY'),'2008',A.FCOUNTRY) "2008"
14 FROM A,B
15 WHERE A.FID=B.FID )
16 GROUP BY FNAME
17 /

姓名 2008 2002 次數
---- ---- ---- ----------
A 美國 英國 2
B 美國 1

SQL>


僅供參考!

3,499

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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