не работает раздел с датой с отметкой времени - PullRequest
0 голосов
/ 13 июля 2011
WITH abc AS
(     
    SELECT p_id    
        ,  t1.amount as amount
        ,  SUM(amount) OVER (PARTITION BY '|| pqr_rec.p_type ||' ) AS sum_amount
    FROM  table1 t1, temp_table tt1t
    WHERE t1.activity_type = 'pqr_rec.p_activity_type'
)     
SELECT p_id
    ,  sum_amount
    ,  amount
FROM abc
WHERE sum_amount > '||pqr_rec.p_amount

t2 Таблица:

xyz_id                p_type          p_amount             p_activity_type
============================================================================
p_1                 p_id,date                100000             sell

t1 Таблица:

T_id            p_id    amount    date                    p_activity_type
=====================================================================
1               E1      100       1984-10-27 00:02:00       sell
2               E1      200       1984-10-27 00:04:00       sell
3               E1      200       1984-10-27 00:05:00       sell
4               E1      300       1984-10-27 00:06:00       sell
5               E1      100       1984-10-27 00:07:00       sell

Теперь здесь 1-я запись таблицы t2 выбирается курсором pqr, и выполняется вышеуказанный запрос, поэтому разбиение выполняется на основе p_id и date, но проблема заключается в том, что date содержит метку времени, поэтому group by не работает. Мне нужно сделать group by на основе даты без отметки времени.

Как мы можем справиться с этой ситуацией. Я использую ORACLE

Ответы [ 2 ]

2 голосов
/ 13 июля 2011

Вы можете создать представление с усеченной датой:

create view t1_trunc_date as
select p_id, trunc(date) as date, ...
from table1;

Затем используйте это вместо t1 в основном запросе.

Или встроенный просмотр, если вы предпочитаете:

WITH abc AS
(     
    SELECT p_id    
        ,  t1.amount as amount
        ,  SUM(amount) OVER (PARTITION BY '|| pqr_rec.p_type ||' ) AS sum_amount
    FROM  (select p_id, trunc(date) as date, ...
           from table1) t1
        , temp_table tt1t
    WHERE t1.activity_type = 'pqr_rec.p_activity_type'
)  
...
1 голос
/ 13 июля 2011

Все даты в Oracle имеют компонент времени.Использование trunc позволит вам разделить по дням:

PARTITION BY trunc(your_date)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...