У меня есть 4 оракула SQL-запросов, которые я хочу иметь в одном результате - PullRequest
0 голосов
/ 24 марта 2012

Эти 4 запроса дают желаемый результат, однако я хочу обернуть эти запросы в ОДИН запрос, который возвращает каждый запрос в виде горизонтального столбца с соответствующими результатами запроса по вертикали.

Я ограничил все запросы rownum <= 20. </p>

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;

У кого-нибудь есть предложения о том, как это сделать?

РЕДАКТИРОВАТЬ: Я хотел бы указатьчто я не хочу результатов друг на друге.Различные запросы должны быть горизонтальными столбцами, в то время как их соответствующие результаты идут вертикально. A

1 Ответ

2 голосов
/ 24 марта 2012

Присоединяйтесь к ним по их rownum (помните, что alias 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...