Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Не работает select sum по вьюшке  [new]
Eldar9x
Member

Откуда:
Сообщений: 54
Обычная вьюшка LedgerBalancesDim (не материализованная) в oracle 11g. Пробую делать простой select в SQL Scratchpad:

select sum(CreditMST) from shema.LedgerBalancesDim;

По идее, должен вернуться один столбец с одной записью, но возвращается один столбец с кол-вом строк, равным, кол-ву строк в этой вьюшке при ее обычном просмотре. Поле по кторому идет агреция - вещественное. И еще, в саомй вьюшке это поле - есть результат агреции по таблице.
23 сен 10, 13:08    [9488561]     Ответить | Цитировать Сообщить модератору
 Re: Не работает select sum по вьюшке  [new]
Eldar9x
Member

Откуда:
Сообщений: 54
и еще то, что возращается в результате - пустое:

К сообщению приложен файл. Размер - 0Kb
23 сен 10, 13:14    [9488602]     Ответить | Цитировать Сообщить модератору
 Re: Не работает select sum по вьюшке  [new]
Lecter
Member

Откуда: Киев
Сообщений: 2032
Eldar9x,

Приведите результат работы в sqlplus, приведите код вьюхи.
ЗЫ ситуация когда sum работает как count на здоровую голову не налезет кроме случая когда цифры совпадают конечно :)

Короче инфу в студию!
23 сен 10, 13:15    [9488610]     Ответить | Цитировать Сообщить модератору
 Re: Не работает select sum по вьюшке  [new]
Eldar9x
Member

Откуда:
Сообщений: 54
После выполнения запроса в sqlplus началось выводится одно поле с пустым значением ( и продолжает все еще). Вобем результат тот же, что и в SQL Scratchpad/


Код вьюхи:

SELECT
SUM(A.DEBITMST) AS DEBITMST,
SUM(A.CREDITMST) AS CREDITMST,
SUM(A.DEBITOPRMST) AS DEBITOPRMST,
SUM(A.CREDITOPRMST) AS CREDITOPRMST,
SUM(A.DEBITTAXMST) AS DEBITTAXMST,
SUM(A.CREDITTAXMST) AS CREDITTAXMST,
SUM(A.DEBITMSTSECOND) AS DEBITMSTSECOND,
SUM(A.CREDITMSTSECOND) AS CREDITMSTSECOND,
SUM(A.DEBITOPRMSTSECOND) AS DEBITOPRMSTSECOND,
SUM(A.CREDITOPRMSTSECOND) AS CREDITOPRMSTSECOND,
SUM(A.DEBITTAXMSTSECOND) AS DEBITTAXMSTSECOND,
SUM(A.CREDITTAXMSTSECOND) AS CREDITTAXMSTSECOND,
SUM(A.QTY) AS QTY,
SUBSTR(NLS_LOWER(A.ACCOUNTNUM),1,10) AS ACCOUNTNUM,
SUBSTR(NLS_LOWER(A.DIMENSION),1,10) AS DIMENSION,
SUBSTR(NLS_LOWER(A.DIMENSION2_),1,10) AS DIMENSION2_,
SUBSTR(NLS_LOWER(A.DIMENSION3_),1,10) AS DIMENSION3_,
SUBSTR(NLS_LOWER(A.DIMENSION4_),1,10) AS DIMENSION4_,
A.TRANSDATE AS TRANSDATE,
A.PERIODCODE AS PERIODCODE,
A.SYSTEMGENERATEDULTIMO AS SYSTEMGENERATEDULTIMO,
SUBSTR(NLS_LOWER(A.DATAAREAID),1,3) AS DATAAREAID,
1010 AS RECID 
FROM LEDGERBALANCESDIMTRANS A 
GROUP BY SUBSTR(NLS_LOWER(A.ACCOUNTNUM),1,10),
SUBSTR(NLS_LOWER(A.DIMENSION),1,10),
SUBSTR(NLS_LOWER(A.DIMENSION2_),1,10),
SUBSTR(NLS_LOWER(A.DIMENSION3_),1,10),
SUBSTR(NLS_LOWER(A.DIMENSION4_),1,10),
A.TRANSDATE,
A.PERIODCODE,
A.SYSTEMGENERATEDULTIMO,
SUBSTR(NLS_LOWER(A.DATAAREAID),1,3)
23 сен 10, 13:34    [9488756]     Ответить | Цитировать Сообщить модератору
 Re: Не работает select sum по вьюшке  [new]
_Nikotin
Member

Откуда: СПб
Сообщений: 2965
Lecter,

Тут не count получается, а столбец с количеством строк как во вью.
23 сен 10, 13:35    [9488765]     Ответить | Цитировать Сообщить модератору
 Re: Не работает select sum по вьюшке  [new]
Eldar9x
Member

Откуда:
Сообщений: 54


К сообщению приложен файл. Размер - 0Kb
23 сен 10, 13:36    [9488776]     Ответить | Цитировать Сообщить модератору
 Re: Не работает select sum по вьюшке  [new]
_Nikotin
Member

Откуда: СПб
Сообщений: 2965
А что такой запрос возвращает?
select sum(CreditMST) from shema.LedgerBalancesDim group by 1;
23 сен 10, 13:37    [9488793]     Ответить | Цитировать Сообщить модератору
 Re: Не работает select sum по вьюшке  [new]
Eldar9x
Member

Откуда:
Сообщений: 54
Причем ,если суммировать по полю Recid (целочисленное), то все работает правильно:

select sum(RecId) from shema1.ledgerbalancesdim;
23 сен 10, 13:39    [9488815]     Ответить | Цитировать Сообщить модератору
 Re: Не работает select sum по вьюшке  [new]
Eldar9x
Member

Откуда:
Сообщений: 54
_Nikotin
А что такой запрос возвращает?
select sum(CreditMST) from shema.LedgerBalancesDim group by 1;


все равно что-то не то:

К сообщению приложен файл. Размер - 0Kb
23 сен 10, 13:41    [9488844]     Ответить | Цитировать Сообщить модератору
 Re: Не работает select sum по вьюшке  [new]
Eldar9x
Member

Откуда:
Сообщений: 54
Мб вьюшки нельзя агрегировать по вещественным полям?
23 сен 10, 13:44    [9488878]     Ответить | Цитировать Сообщить модератору
 Re: Не работает select sum по вьюшке  [new]
orawish
Member

Откуда: Гадюкино-2 (City)
Сообщений: 15487
Eldar9x,

1) версию сервера огласите
2) план запроса
3) попробуйте
with t as (select --+ materialize
 CreditMST from shema.LedgerBalancesDim)
select sum(CreditMST) from t;
23 сен 10, 16:23    [9490495]     Ответить | Цитировать Сообщить модератору
 Re: Не работает select sum по вьюшке  [new]
Eldar9x
Member

Откуда:
Сообщений: 54
вот. А после выполения запроса
with t as (select --+ materialize
 CreditMST from axgrdlive.LedgerBalancesDim)
select sum(CreditMST) from t;
в sql*plus вернулось одно значение, и вроде как верное. В SQL Scratchpad не вернулось ничего.

К сообщению приложен файл. Размер - 0Kb
24 сен 10, 09:18    [9493635]     Ответить | Цитировать Сообщить модератору
 Re: Не работает select sum по вьюшке  [new]
Eldar9x
Member

Откуда:
Сообщений: 54
Но я просто не могу менять этот запрос. Либо надо заставить работать исходный запрос, или вообще мне отказываться от него
24 сен 10, 09:19    [9493639]     Ответить | Цитировать Сообщить модератору
 Re: Не работает select sum по вьюшке  [new]
SQL*Plus
Member

Откуда: Россия, Москва
Сообщений: 8131
Eldar9x,
Возможно, вы обнаружили новый bug.
Обратитесь в техподдержку Oracle.
24 сен 10, 10:28    [9494121]     Ответить | Цитировать Сообщить модератору
 Re: Не работает select sum по вьюшке  [new]
SQL*Plus
Member

Откуда: Россия, Москва
Сообщений: 8131
SQL*Plus,
Выполните в SQL*Plus
SELECT object_name, object_type
FROM user_objects
WHERE object_name = 'LEDGERBALANCESDIMTRANS';

DESCRIBE LEDGERBALANCESDIMTRANS
и покажите результаты
24 сен 10, 10:30    [9494149]     Ответить | Цитировать Сообщить модератору
 Re: Не работает select sum по вьюшке  [new]
Eldar9x
Member

Откуда:
Сообщений: 54
Пишет, строки не выбраны, пробовал и под Sys, и под схемой пользователя
24 сен 10, 10:45    [9494291]     Ответить | Цитировать Сообщить модератору
 Re: Не работает select sum по вьюшке  [new]
Eldar9x
Member

Откуда:
Сообщений: 54
а нет вру.Под схемой пользователя:

OBJECT_NAME                                                                                                                      OBJECT_TYPE
-------------------------------------------------------------------------------------------------------------------------------- -------------------
LEDGERBALANCESDIMTRANS                                                                                                           TABLE

1 строка выбрана.

а на второй запрос:

Имя Пусто? Тип
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -------- ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
DEBITMST NOT NULL NUMBER(32,16)
DEBITOPRMST NOT NULL NUMBER(32,16)
DEBITTAXMST NOT NULL NUMBER(32,16)
DIMENSION NOT NULL VARCHAR2(10)
DIMENSION2_ NOT NULL VARCHAR2(10)
DIMENSION3_ NOT NULL VARCHAR2(10)
DIMENSION4_ NOT NULL VARCHAR2(10)
ACCOUNTNUM NOT NULL VARCHAR2(10)
CREDITMST NOT NULL NUMBER(32,16)
CREDITOPRMST NOT NULL NUMBER(32,16)
CREDITTAXMST NOT NULL NUMBER(32,16)
PERIODCODE NOT NULL NUMBER(10)
TRANSDATE NOT NULL DATE
CREDITMSTSECOND NOT NULL NUMBER(32,16)
DEBITMSTSECOND NOT NULL NUMBER(32,16)
DEBITOPRMSTSECOND NOT NULL NUMBER(32,16)
CREDITOPRMSTSECOND NOT NULL NUMBER(32,16)
DEBITTAXMSTSECOND NOT NULL NUMBER(32,16)
CREDITTAXMSTSECOND NOT NULL NUMBER(32,16)
QTY NOT NULL NUMBER(32,16)
SYSTEMGENERATEDULTIMO NOT NULL NUMBER(10)
LEDGERBALANCESVARIANT NOT NULL NUMBER(10)
DATAAREAID NOT NULL VARCHAR2(3)
RECVERSION NOT NULL NUMBER(10)
RECID NOT NULL NUMBER(10)
24 сен 10, 10:51    [9494341]     Ответить | Цитировать Сообщить модератору
 Re: Не работает select sum по вьюшке  [new]
orawish
Member

Откуда: Гадюкино-2 (City)
Сообщений: 15487
SQL*Plus
Eldar9x,
Возможно, вы обнаружили новый bug.
Обратитесь в техподдержку Oracle.

причём - очевидно - оптимизатор лажает
24 сен 10, 10:56    [9494397]     Ответить | Цитировать Сообщить модератору
 Re: Не работает select sum по вьюшке  [new]
_Nikotin
Member

Откуда: СПб
Сообщений: 2965
А поле которое агрегируется случайно не типа binary_float ?
сработает ли так ?
select sum(to_number(CreditMST)) from LedgerBalancesDim;
24 сен 10, 10:57    [9494407]     Ответить | Цитировать Сообщить модератору
 Re: Не работает select sum по вьюшке  [new]
Eldar9x
Member

Откуда:
Сообщений: 54
_Nikotin
А поле которое агрегируется случайно не типа binary_float ?
сработает ли так ?
select sum(to_number(CreditMST)) from LedgerBalancesDim;


Нее, обычный Number. Запрос выдал то же самое, то есть кучу пустых строк. Уж не знаю что и делать (. Может в правах что-нибудь... Хотя ведь захожу под sys с sysdba.
24 сен 10, 11:49    [9495044]     Ответить | Цитировать Сообщить модератору
 Re: Не работает select sum по вьюшке  [new]
Eldar9x
Member

Откуда:
Сообщений: 54
Чудеса какие-то )
Сделали еще одну вьюху TestV - копию исходной. Исходную переписали так:

SELECT "DEBITMST","CREDITMST","DEBITOPRMST","CREDITOPRMST","DEBITTAXMST","CREDITTAXMST","DEBITMSTSECOND","CREDITMSTSECOND","DEBITOPRMSTSECOND","CREDITOPRMSTSECOND","DEBITTAXMSTSECOND","CREDITTAXMSTSECOND","QTY","ACCOUNTNUM","DIMENSION","DIMENSION2_","DIMENSION3_","DIMENSION4_","TRANSDATE","PERIODCODE","SYSTEMGENERATEDULTIMO","DATAAREAID","RECID"
FROM AXGRDLIVE.TESTV

И суммирование заработало. То есть получается сделать агрегацию из исходной вьюхи.
24 сен 10, 12:07    [9495316]     Ответить | Цитировать Сообщить модератору
 Re: Не работает select sum по вьюшке  [new]
orawish
Member

Откуда: Гадюкино-2 (City)
Сообщений: 15487
Eldar9x
Чудеса какие-то )
..

а с таблицей, откуда во вью тянется, не делали изменения типа столбцов или дроп колонок с пересозданием?

ещё версия - rls
24 сен 10, 12:25    [9495504]     Ответить | Цитировать Сообщить модератору
 Re: Не работает select sum по вьюшке  [new]
Eldar9x
Member

Откуда:
Сообщений: 54
Нет, на таблице изм. не было, пробовали вьюшку удалять и пересоздавать - все одно и то же.
А что такое версия rls и как ее посмотреть?
24 сен 10, 14:25    [9496797]     Ответить | Цитировать Сообщить модератору
 Re: Не работает select sum по вьюшке  [new]
env
Member

Откуда: Россия, Москва
Сообщений: 6727
Eldar9x,

Row-Level Security
Overview of Access Restrictions on Tables, Views, Synonyms, or Rows
DBMS_RLS
24 сен 10, 14:39    [9496972]     Ответить | Цитировать Сообщить модератору
 Re: Не работает select sum по вьюшке  [new]
Глупый телевизор
Guest
SQL*Plus
Eldar9x,
Возможно, вы обнаружили новый bug.
Обратитесь в техподдержку Oracle.

Не надоело писать одно и то же?
Я конечно понимаю что в подобных Ваших ответах сквозит самопиар! Но!!!
О чем будет разговаривать с тех поддержкой этот овощ???
Он ни малейшего понятия не то что о внутренних механизмах оракла не имеет, а даже информацию не способен вывести в SQL*Plus и скопипастить... вместо чего лепит сюда свои скриншоты!

Ну я за свою деятельность сталкивался с немеряным числом багов типа
1) 03113,
2) wrong results (связанные с ansi left join, связанные с connect by + analytic и прочее, прочее...)
3) ora-600, ошибки связанные с памятью и проч
4) бажины, связанные с примитивнейшим уже до нельзя средством которое является вашей тезкой
5) ошибки связанные с созданием левых объектов, с выполнением втихую без ошибки и без результата,
вот вчера напоролся на бажину с трассировкой и много много другого...

К чему я это? Да к тому, что частенько напарываешься на это и надо срочно найти какой-то workaround вместо того чтоб раскручивать бюрократическую машину и ощаться с людьми которые ничего нового не расскажут.
Вместо этого с опытом лучше начинаешь понимать чего стоит избегать, где на что можно напороться и куда копать.
Можно, конечно, пытаться изменить мир к лучшему и заводить всякие там реквесты, только неизвестно в какую версию оно войдет. И жизнь слишком коротка для того чтоб бороться с ветряными мельницами, вместо этого хочется чтоб функционал работал и вечером проводить время с людьми, с которыми приятно... а не подружкой по имени Командная строка.

Про кривой поиск по металинку, кривой поиск по семинарам оракла, про кучу неитегрированного навоза, которая здесь обсуждалась. Про то, что главная цель любого бизнеса приносить прибыль, а не делать качественный продукт, я, надеюсь, рассказывать не надо???

Про то, чтоб быть специалистом нормального уровня, надо иметь кучу аакаунтов в разных форумах/конференциях, читать блоги авторитетных товарищей и прочие источники помимо доки и книг, надеюсь, тоже не надо говорить.

Так, вот какого вот этому ТС гвоорить обратится в техподдержку, вместо того чтобы просто пнуть в правильно направлении или отправить к более умным людям???

С известным здесь любителем техничек ничего общего не имею, просто по некоторым причинам не хочу светить ник, хоть и моржно догадаться кто я.
Просто достатло, что оракл и все что с ним связано - такое говно... да, несмотря на это, версионный механизм хорошая штука и лучших альтернатив я не вижу.
24 сен 10, 14:52    [9497133]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить