создать из выбора (ошибка запроса) - PullRequest
1 голос
/ 16 сентября 2011
create   table1 as  SELECT  from c.Name, Value, Qtr, Value as SUM(Value) 
from User.Pofile a,pet_dsa_qtr_table b,User.Count c,User.Service  d 
WHERE Category = 'PROFESSIONAL' and Item_Name = 'PROF_PKT_RECVD' and    
convert(char(32),d.User_Id) = c.Name and Service_Name_Cd = 2 
and Status = 2 and d.User_Id *= a.User_Id  and c.Period = b.Period 
and Module = 'ACCT_TRADES' and Type in ('EQ','OPTN')
GROUP BY Name, Item_Value,
Qtr HAVING SUM(Value) >= 10000  and Item_Value in ('0', NULL);

Выше был запрос, который я создал как эквивалент для sybase. Может кто-нибудь помочь мне исправить этот запрос

1 Ответ

4 голосов
/ 16 сентября 2011

У вас есть довольно серьезные несоответствия синтаксиса в вашем запросе, которые я пытался исправить (с догадками, поскольку вы не предоставили структуру таблицы). например В списке выбора вы выбираете «Значение», но в группе GROUP BY вы группируете по «Item_Value» и т. Д.

Вам также необходимо полностью квалифицировать свои столбцы, некоторые из них соответствуют вашим требованиям, а некоторые (например, «Модуль» и «Тип» и т. Д.) - нет.

Возможно, вы также захотите добавить предложение хранилища.

Вот мое самое обоснованное предположение о том, чего вы пытаетесь достичь:

CREATE TABLE table1 
AS  
SELECT c.Name, 
       Item_Value, 
       Qtr, 
       SUM(Value) as "SUM_Value"
  FROM User.Pofile a
       pet_dsa_qtr_table b,
       User.Count c,
       User.Service d  
 WHERE Category = 'PROFESSIONAL' 
   AND Item_Name = 'PROF_PKT_RECVD' 
   AND TO_CHAR(d.User_Id) = c.Name 
   AND Service_Name_Cd = 2  
   AND Status = 2 
   AND d.User_Id = a.User_Id(+)  
   AND c.Period = b.Period  
   AND Module = 'ACCT_TRADES' 
   AND Type in ('EQ','OPTN') 
 GROUP BY c.Name, 
          Item_Value, 
          Qtr 
HAVING (SUM(Value) >= 10000  
   AND NVL(Item_Value, '0') = '0'); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...