Чтобы сделать это, как вложено выбрать, вы можете просто добавить второй запрос на строку выбора первого. Он возвращает одно значение и одну строку, так что это нормально. Концептуально, это:
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
Большое спасибо вложенному элементу работает :) Однако есть еще одна проблема. Это дает мне тот же самый SUMTOTAL во всех Eventattribute1. SUMTOTAL должен отличаться. Можете ли вы помочь мне в этом вопросе? – Kristiana
Это работает. Огромное спасибо :) – Kristiana