从两个不同的select语句中保存两个值的最好和最简单的方法是什么?将两个select语句的值保存在两个不同的变量中
我有一个查询是这样的:
SELECT * FROM (
SELECT FIELD1 FROM (<SUB SELECT STATMENT>)
UNION ALL
SELECT FIELD2 FROM (<SUB SELECT STATMENT>))
我想什么是保存FIELD1和FIELD2值,以便以后我可以做一些calulation有了它,如FIELD1/FIELD2。我尝试使用游标,但遇到问题。选择语句太复杂了。有什么建议么?
更新:
从我目前的查询结果集看起来像这样。
SUM_OF_MESSAGES | LABEL
----------------------------
145323 | PUSHED
2633267 | RECEIVED
|
我想从第一两行采取的价值观和他们分开。例如。 145323/2633267
换句话说,是否有一种方法可以从我的上面的查询中将FIELD1除以FIELD2?
另一个更新:
这里是我的查询:
SELECT SUM(R.MESSAGES) AS SUM_OF_MESSAGES, CASE WHEN R.LABEL = 1 THEN 'PUSHED' WHEN R.LABEL = 2 THEN 'RECEIVED' END AS LABEL FROM (
SELECT SUM(Q.MESSAGES) AS "MESSAGES", 1 LABEL FROM (
SELECT USER_LOGIN,
EVENT_MSG,
ROW_LST_UPD_TS,
COMPONENT_NAME,
REGEXP_SUBSTR (SUBSTR (EVENT_MSG, INSTR (EVENT_MSG, ' ', 1, 1), INSTR (EVENT_MSG, ' ', 1, 1)), '[0-9]+') AS "MESSAGES"
FROM EVENT_MGT.EVENT_LOG
WHERE ROW_LST_UPD_TS BETWEEN (TRUNC (:DATEINPUT) - 1) + 5/86400 AND (TRUNC (:DATEINPUT)) + 5/86400
AND EVENT_ID = 101
AND COMPONENT_NAME LIKE '%Web ICE Downloader.exe%'
GROUP BY COMPONENT_NAME,
USER_LOGIN,
EVENT_MSG,
ROW_LST_UPD_TS
ORDER BY ROW_LST_UPD_TS) Q
UNION ALL
SELECT SUM(Q.MESSAGES) "MESSAGES", 2 LABEL FROM (
SELECT USER_LOGIN,
EVENT_MSG,
ROW_LST_UPD_TS,
COMPONENT_NAME,
REGEXP_SUBSTR (SUBSTR (EVENT_MSG, INSTR (EVENT_MSG, ' ', 1, 1), INSTR (EVENT_MSG, ' ', 1, 1)), '[0-9]+') AS "MESSAGES"
FROM EVENT_MGT.EVENT_LOG
WHERE ROW_LST_UPD_TS BETWEEN (TRUNC (:DATEINPUT) - 1) + 5/86400 AND (TRUNC (:DATEINPUT)) + 5/86400
AND EVENT_ID = 100
AND COMPONENT_NAME LIKE '%Web ICE Downloader.exe%'
GROUP BY COMPONENT_NAME,
USER_LOGIN,
EVENT_MSG,
ROW_LST_UPD_TS
ORDER BY ROW_LST_UPD_TS) Q) R
GROUP BY R.LABEL
这里是我的结果集:
SUM_OF_MESSAGES | LABEL
----------------------------
145323 | PUSHED
2633267 | RECEIVED
|
我想这两个数字在同一个SELECT语句划分。请帮忙。
我不明白。这个查询可以返回任意数量的记录,那么说“FIELD1/FIELD2”是什么意思? – 2012-04-02 17:49:17
保存它是什么意思?你在存储过程中谈论吗?或者使用诸如Java,C#或PHP之类的编程语言? – Churk 2012-04-02 17:50:06
考虑到上面写的语句,您将只返回一个名为FIELD1的字段。我怀疑这不是你想到的。你能解释你想完成什么吗? – 2012-04-02 17:55:16