3,499
社区成员
发帖
与我相关
我的任务
分享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>