[英]How to do Nested SELECT
我想使用嵌套SELECT将code_2的结果转换为code_1的结果。 你能帮我做到吗? 我使用数据库-Oracle PL / SQL Developer非常感谢
代码_1:
SELECT DISTINCT eventattribute1
FROM table1 partition(m201302)
WHERE eventattribute22 = 'EURO'
AND eventattribute13 = 'MC_PO_ROAM'
AND eventattribute14 != 'T'
AND event_cost != '0'
GROUP BY eventattribute1
代码_2:
SELECT Numtodsinterval(Sum(To_char(To_date(duration, 'HH24:MI:SS'),
'HH24') *
3600 +
To_char(
To_date(duration, 'HH24:MI:SS'),
'MI')
* 60 +
To_char(To_date(duration,
'HH24:MI:SS'), 'SS')), 'second') AS
SUMTOTAL
FROM table1 partition(m201302)
要将其作为嵌套选择,只需将第二个查询添加到第一个查询的选择行即可。 它返回一个值和一行,所以很好。 从概念上讲,这是:
SELECT eventattribute1,
<code2>
FROM table1 partition(m201302)
WHERE eventattribute22 = 'EURO'
AND eventattribute13 = 'MC_PO_ROAM'
AND eventattribute14 != 'T'
AND event_cost != '0'
GROUP BY eventattribute1
( distinct
是不必要的。)
实际上,这看起来更糟:
SELECT eventattribute1,
(SELECT Numtodsinterval(Sum(To_char(To_date(duration, 'HH24:MI:SS'),
'HH24') *
3600 +
To_char(
To_date(duration, 'HH24:MI:SS'),
'MI')
* 60 +
To_char(To_date(duration,
'HH24:MI:SS'), 'SS')), 'second') AS SUMTOTAL
FROM table1 partition(m201302)
) as SUMTOTAL
FROM table1 partition(m201302)
WHERE eventattribute22 = 'EURO'
AND eventattribute13 = 'MC_PO_ROAM'
AND eventattribute14 != 'T'
AND event_cost != '0'
GROUP BY eventattribute1
一种替代方法是使用解析函数,因为您不需要此查询的嵌套选择。
为了回应您的评论,一种方法是相关子查询:
SELECT eventattribute1,
(SELECT Numtodsinterval(Sum(To_char(To_date(duration, 'HH24:MI:SS'),
'HH24') *
3600 +
To_char(
To_date(duration, 'HH24:MI:SS'),
'MI')
* 60 +
To_char(To_date(duration,
'HH24:MI:SS'), 'SS')), 'second') AS SUMTOTAL
FROM table1 partition(m201302) t1
where t1.eventattribute1 = table1.eventattribute1
) as SUMTOTAL
FROM table1 partition(m201302)
WHERE eventattribute22 = 'EURO'
AND eventattribute13 = 'MC_PO_ROAM'
AND eventattribute14 != 'T'
AND event_cost != '0'
GROUP BY eventattribute1;
更简单的方法可能是将其直接移到聚合中。 。 但是您可能需要使用where
子句中的条件;
SELECT eventattribute1,
Numtodsinterval(Sum(To_char(To_date(duration, 'HH24:MI:SS'),
'HH24') *
3600 +
To_char(
To_date(duration, 'HH24:MI:SS'),
'MI')
* 60 +
To_char(To_date(duration,
'HH24:MI:SS'), 'SS')), 'second') AS SUMTOTAL
FROM table1 partition(m201302)
WHERE eventattribute22 = 'EURO'
AND eventattribute13 = 'MC_PO_ROAM'
AND eventattribute14 != 'T'
AND event_cost != '0'
GROUP BY eventattribute1
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.