Oracle動態生成查詢交叉表

2021-09-30 04:42:28 字數 1447 閱讀 8087

表結構:

序號字段  中文名稱        型別           說        明

1   reportid   number(4)     報告編號

2   recordno  number         記錄號

3   fieldno     number(2)     字段編號

4   datum      varchar(200)  值

reportid recordno fieldno datum

1                1              1         王小強

1                1              2         武漢市江漢區王家路

1                1              3         2010-01-12

1                1              4         65783213

1                1              5         否

1                2              1         劉章節

1                2              2         武昌區中南路

1                2              3         1950-04-12

1                2              4         13995094532

1                2              5         已婚

oracle動態生成查詢交叉表

select max(a1) as 姓名, max(a2) as 位址, max(a3) as 出生, max(a4) as **, max(a5) as 婚否

from (select recordno,

nvl(decode(fieldno, 1, datum), '') a1,

nvl(decode(fieldno, 2, datum), '') a2,

nvl(decode(fieldno, 3, datum), '') a3,

nvl(decode(fieldno, 4, datum), '') a4,

nvl(decode(fieldno, 5, datum), '') a5

from rep_register

where reportid = 1

and recordno = (select recordno

from rep_register

where fieldno = 2

and datum like '武漢市%'))

group by recordno

reportid=1為需要查詢的報告號

再下面為其它查詢條件

oracle動態交叉表

有一張表 id name quarter quantity 1 開發部 春天 10000 2 開發部 夏天 50000 3 開發部 秋天 30000 4 開發部 冬天 20000 5 銷售部 春天 10000 6 銷售部 夏天 4000 7 銷售部 秋天 30000 8 銷售部 冬天 20000 想...

SQL動態交叉表

動態交叉表就是列表可以根據表中資料的情況動態建立列。動態查詢不能使用 select 語句實現,它可以利用儲存過程實現。思路是 首先檢索列頭資訊,形成乙個游標,然後遍歷游標,將上面靜態交叉表實現過程中使用 case 語句判斷的內容用游標裡的值替代,形成一條新的 sql查詢語句,然後執行並返回結果。下面...

動態交叉表總結

declare sql varchar 8000 看論壇裡討論動態交叉表這麼多貼,小結了一下.其實建立動態交叉表裡是應用了遞迴的select變數這種概念,遞迴的select變數可以使用select語句和子查詢將乙個變數與其自身拼接起來。乙個標準的建立動態交叉表的code我歸納如下 declare s...