2012-03-24 103 views
0

這4個查詢產生所需的結果,但我想把這些查詢包裝成一個查詢,返回每個查詢作爲水平列與垂直相應的查詢結果。我有4個oracle SQL查詢,我想要在一個結果

我有限的所有查詢到ROWNUM < = 20

SELECT * FROM (SELECT count(tl.usr) as "Antall oppslag" FROM TABLE tl WHERE 
tl.timestamp >= (sysdate - (1/24)) GROUP BY tl.usr ORDER BY count(tl.usr) desc) WHERE 
rownum <= 20; 

SELECT * FROM (SELECT count(tl.usr) as "Antall oppslag" FROM TABLE tl WHERE 
tl.timestamp >= (sysdate - (1)) GROUP BY tl.usr ORDER BY count(tl.usr) desc) WHERE 
rownum <= 20; 

SELECT * FROM (SELECT count(tl.usr) as "Antall oppslag" FROM TABLE tl WHERE 
tl.timestamp >= (sysdate - (7)) GROUP BY tl.usr ORDER BY count(tl.usr) desc) WHERE 
rownum <= 20; 

SELECT * FROM (SELECT count(tl.usr) as "Antall oppslag" FROM TABLE tl WHERE 
tl.timestamp >= (sysdate - (30)) GROUP BY tl.usr ORDER BY count(tl.usr) desc) WHERE 
rownum <= 20; 

人對如何做到這一點有什麼建議?

編輯:我想指定我不希望結果在彼此之上。不同的查詢必須是水平列,而他們各自的結果去vertically.a

回答

2

通過他們的rownum加入他們的行列(記得別名ROWNUM)

select * from 
(
SELECT rownum rownr, a.* FROM (SELECT count(tl.usr) as "Antall oppslag" FROM TABLE tl WHERE 
tl.timestamp >= (sysdate - (1/24)) GROUP BY tl.usr ORDER BY count(tl.usr) desc) a WHERE 
rownum <= 20 
) a, 
(
SELECT rownum rownr, b.* FROM (SELECT count(tl.usr) as "Antall oppslag" FROM TABLE tl WHERE 
tl.timestamp >= (sysdate - (1)) GROUP BY tl.usr ORDER BY count(tl.usr) desc) b WHERE 
rownum <= 20 
) b, 
(
SELECT rownum rownr, c.* FROM (SELECT count(tl.usr) as "Antall oppslag" FROM TABLE tl WHERE 
tl.timestamp >= (sysdate - (7)) GROUP BY tl.usr ORDER BY count(tl.usr) desc) c WHERE 
rownum <= 20 
) c, 
(
SELECT rownum rownr, d.* FROM (SELECT count(tl.usr) as "Antall oppslag" FROM TABLE tl WHERE 
tl.timestamp >= (sysdate - (30)) GROUP BY tl.usr ORDER BY count(tl.usr) desc) d WHERE 
rownum <= 20 
) d 
where a.rownr = b.rownr 
and a.rownr = c.rownr 
and a.rownr = d.rownr 
+0

啊這個看起來很完美。讓我在接受答案之前試用一下。非常好。我之前做了一個非常類似的查詢,但我忘記了a.rownum = b.rownum等等,所以我得到了一個非常糟糕的結果。 – 2012-03-24 15:30:12

+0

實際上表引用是在子查詢中。它是否可以從子查詢之外引用?我得到的錯誤表a,b,c,d不存在。更具體地說,它是在無效的user.table.column,table.column,或列規範「,我說a.rownum = b.rownum – 2012-03-24 15:43:21

+1

@Karrax:我認爲你應該使用別名爲rownum例如:'SELECT rownum rwnum' .......其中a.rwnum = b.rwnum – 2012-03-24 15:50:19

相關問題